配列やコレクション(1つ以上の同一オブジェクトの集まり)の各要素に対して処理を繰り返す場合は For Each … Next ステートメントを使用します。
For Eachループの使用例
配列をループ処理する例
For Eachループを配列に対して使用する例です。配列に対して使用する場合、要素(以下サンプルの elm)はVariantで定義するか変数の型を省略しておきます。
実行結果はイミディエイトウィンドウに表示されるので、事前に表示させておいてください。
Sub sample5_7()
Dim Points(1 To 5) As Integer
Dim elm As Variant
Points(1) = 10
Points(2) = 25
Points(3) = 0
Points(4) = 50
Points(5) = 95
'配列の内容をすべて表示します。
For Each elm In Points
Debug.Print elm
Next elm
End Sub
コレクションをループ処理する例
コレクションに対して使用する場合、要素(以下サンプルの elm)はコレクションと同じオブジェクトで定義しておきます。
この例では、ワークシートコレクション(Worksheets)に対して繰り返し処理を行うので、要素はワークシートオブジェクト(Worksheet)で定義しています。
Sub sample5_8()
Dim elm As Worksheet
'シート名をすべて表示します。
For Each elm In Worksheets
Debug.Print elm.Name 'シート名を表示
Next elm
End Sub
ループを途中で終了する
For Each…Next ステートメントを途中で終了したい場合は For…Next ステートメントと同様に Exit For ステートメントを使用します。