目次
目的
- Excel VBA のマクロで一列全体を選択したい。
- 選択した列の入力値を新規入力、変更したい。
- セルの書式設定を変更したい。
題材
- Excel ワークシートの 3 列目を選択します。
- 3 列目全体に「 VBA 」の文字を入力します。
- 3 列目全体の背景色を黄色に変更します。
ワークシートの 3 列目全体が選択した後に、セルの背景色を黄色に変更、 VBA の文字をセルに入力しています。

その方法の一例
Excel VBA のコード例
Sub 方法_002797()
ActiveSheet.Columns(3).Select 'C 列を選択する。
ActiveSheet.Columns(3).Interior.ColorIndex = 6 '背景色を黄色に変更する。
ActiveSheet.Columns(3).Value = "VBA" 'VBA の文字を入力する。
End Sub
上記のマクロを実行すると以下のような結果になりました。

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

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


そこで、エラーの解消方法として
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
実行結果は、以下のようになりました。今度は、エラーの発生はありませんでした。

テスト環境
- Windows 10
- Microsoft Office Excel 2003
あとがき
本投稿、間違いがないと良いですが。
以上、閲覧ありがとうございました。