For Each文についてご説明します。For Eachはブック内の全てのオブジェクトを操作対象にすることができます。
それでは具体的なコードに付いて確認していきましょう。
<構文>
For Each オブジェクト変数 In オブジェクト ~繰り返し処理を記述~ Next オブジェクト変数
操作対象とするオブジェクトはInの後に指定します。
また、オブジェクトを格納するオブジェクト変数の種類にも注意しましょう。
ブック内の全てのワークシートを操作する
<コード>
Dim WS As Worksheet 'ワークシートのオブジェクト変数としてWSを定義' For Each WS In Worksheets 'ブック内のワークシートの集合(Worksheets)からワークシートを1つずつWSに格納' If InStr(WS.Name, "月") <> 0 Then 'シート名に【月】が含まれる場合' WS.Tab.ColorIndex = 3 'シート見出しの色を赤にする' End If Next WS
<実行例>
例ではシート名に“月”が含まれるシート見出しの色を変更しています。
選択した範囲全てのセルを操作する
前述のコードではオブジェクト全体を操作対象としていましたが、選択されたオブジェクトの集合である
SelectionもFor Eachで扱うことができます。
ブック全体をチェックするよりも操作対象を絞った方がプログラムがより高速に動くようになるので
ぜひ押さえておきたいコードですね。
<コード>
Dim MyR As Range 'オブジェクト変数にRangeを指定' Range("B4:E7").Select For Each MyR In Selection 'Selection内のセルを操作対象とする' MyR.Interior.ColorIndex = 3 'セルの色を赤にする' Next MyR
おわりに
For Eachを使用することでブック内に多数存在するオブジェクトをまとめて操作することが可能になります。If文などと組み合わせて使用するとさらに効率的にブックを管理することができるでしょう。