目次

目的

  • Excel VBA のマクロで一列全体を選択したい。
  • 選択した列の入力値を新規入力、変更したい。
  • セルの書式設定を変更したい。

目次まで戻る

題材

  • Excel ワークシートの 3 列目を選択します。
  • 3 列目全体に「 VBA 」の文字を入力します。
  • 3 列目全体の背景色を黄色に変更します。

ワークシートの 3 列目全体が選択した後に、セルの背景色を黄色に変更、 VBA の文字をセルに入力しています。

列選択を行う Excel マクロの完成イメージ。
3 列目の C 列全体が選択状態になっている。背景色が黄色に変更されている。 VBA の文字が一括で入力されている。

目次まで戻る

その方法の一例

Excel VBA のコード例

Sub 方法_002797()

ActiveSheet.Columns(3).Select 'C 列を選択する。
ActiveSheet.Columns(3).Interior.ColorIndex = 6 '背景色を黄色に変更する。
ActiveSheet.Columns(3).Value = "VBA" 'VBA の文字を入力する。

End Sub

上記のマクロを実行すると以下のような結果になりました。

列選択を行う Excel マクロの実行結果。
3列目が選択状態になっている。背景色が黄色に変更されて、 VBA の文字が入力されている。

ワークシートの最終行の 65536 行( Excel 2003 の場合)まで、セル選択、セル着色、文字入力が行われています。

列選択を行う Excel マクロの実行結果。 65536 行。
C 列全体を対象に操作を行ったので、 65536 行まで一括で変更されています。

With ステートメント

上記「方法_002797 」のコードでは、

ActiveSheet.Columns(3)

の記述を 3 回書いてありますが、以下のように With ステートメントを使用した書き方もできるようです。 ActiveSheet.Columns(3) の記述が 1 回で済みました。

Sub 方法_002797_2()

With ActiveSheet.Columns(3) 'End With までが With ステートメントになります。

.Select 'C 列を選択する。
.Interior.ColorIndex = 6 '背景色を黄色に変更する。
.Value = "VBA" 'VBA の文字を入力する。

End With
   
End Sub

別のワークシートを操作

上記のマクロは Sheet1 で実行したので、 Sheet1 に対してセル選択など操作が行われましたが、 Sheet2 、 Sheet3 でマクロを実行すると、 Sheet2 、 Sheet3 に対して操作が行われます。これは、

ActiveSheet.Columns(3)

と、アクティブシート(現在のシート)の何列目と指定しているからだと思います。

Sheet1 でマクロを実行して、 Sheet2 を変更したい場合は、以下のように書くとできると思います。ただ以下のマクロを実行すると、 .select の行でエラーが発生します。これは、 Sheet1 でマクロを実行しているので、 Sheet2 がアクティブシートになっていないのが原因だと思います。

Sub 方法_002797_3()

With Worksheets("Sheet2").Columns(3) 'End With までが With ステートメントになります。

.Select 'C 列を選択する。'この行でエラーが発生しました。
.Interior.ColorIndex = 6 '背景色を黄色に変更する。
.Value = "VBA" 'VBA の文字を入力する。

End With

End Sub
Excel VBA 実行時エラー 1004
Range クラスの Select メソッドが失敗しました。
実行時エラー 1004 の発生箇所。
.Select の部分でエラーが発生してしまいました。 Shhet2 がアクティブシートになっていないのが原因だと思います。

そこで、エラーの解消方法として

Worksheets("Sheet2").Activate

のコードを追加してみました。事前に Sheet2 をアクティブシートに設定してみます。それか、背景色の変更と文字入力を行うのに、セル選択の .Select は必要ないので行ごと削除するのも良いと思います。

Sub 方法_002797_4()

Worksheets("Sheet2").Activate 'この記述を追加してみました。 Sheet2 がアクティブシートに設定されます。

With Worksheets("Sheet2").Columns(3) 'End With までが With ステートメントになります。

.Select 'C 列を選択する。
.Interior.ColorIndex = 6 '背景色を黄色に変更する。
.Value = "VBA" 'VBA の文字を入力する。

End With

End Sub

実行結果は、以下のようになりました。今度は、エラーの発生はありませんでした。

列選択を行う Excel マクロの実行結果。 別のワークシートを操作。
Sheet1 でマクロを実行しましたが、 Sheet2 を操作できています。

目次まで戻る

テスト環境

  • Windows 10
  • Microsoft Office Excel 2003

目次まで戻る

あとがき

本投稿、間違いがないと良いですが。

以上、閲覧ありがとうございました。

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿