🦈

Excel VBA_For Each~Nextステートメント

2022/12/23に公開

この記事ではFor Each~Nextステートメントについてまとめます。For Each~Nextはコレクションの全ての要素に対して繰り返し処理を実行します。構文はこちらです。

For Each オブジェクト変数 In コレクション
  処理
Next

具体的にはコレクション内の全てのオブジェクトを順番にオブジェクト変数へ代入し、処理をおこなっていきます(各オブジェクトへの参照を順番に代入するためオブジェクト変数が必要となっています。)

サンプルコード

具体的なコードを見ていきましょう。

セルの要素に対し処理を実行

指定された範囲内のセルに対して、もし空白だった場合に黄色を塗っていきます。

Dim 参照オブジェクト As Range
For Each 参照オブジェクト In Range("B3:C12")
    If 参照オブジェクト = "" Then
        参照オブジェクト.Interior.ColorIndex = 6
    End If
Next

指定された範囲内のRangeオブジェクトに対して、各要素を空白かどうか?をチェックしました。実行結果は以下です。

全シートを印刷プレビュー

次にブック内の全シートに対して印刷プレビューを実行します。

Dim 参照オブジェクト As Worksheet
For Each 参照オブジェクト In Worksheets
    参照オブジェクト.PrintPreview
Next

同じことをFor文で実現すると以下のようになります。Countによって要素数を計算してFor文と組み合わせています。

Dim i As Integer
For i = 1 To Worksheets.Count
  Worksheets(i).PrintPreview
Next i

For Eachを使用すると全要素に対して処理を加えることが明白なので、場面に応じて自分の使いやすい方で試してみて下さい。

Discussion