For Each...Next ステートメント

配列またはコレクションの各要素に対して、ステートメントのグループを繰り返します。

構文

[各要素] グループ
[ statements ]
[ Exit For ]
[ statements ]
へ [ 要素 ]

For...Each...Next ステートメントの構文には、次の指定項目があります。

パーツ 説明
element 必須。 コレクションまたは配列の要素を反復処理するために使用される 変数です。 コレクションの場合、 要素 には Variant 変数、汎用オブジェクト変数、または特定のオブジェクト変数のみを指定できます。 配列の場合は、element に使用できるのは Variant 変数だけです。
group 必須。 オブジェクトのコレクションまたは配列の名前です (ユーザー定義型の配列を除きます)。
statements 省略可能。 group の各アイテムに対して実行される 1 つ以上のステートメントです。

解説

group に少なくとも 1 つの要素がある場合、For…Each ブロックに入ります。 ループが入力されると、ループ内のすべてのステートメントがグループ内の最初の要素に対して実行 されますgroup にさらに要素がある場合、各要素に対してループ内のステートメントの実行が続けられます。 group にそれ以上要素がなくなると、ループは終了し、Next ステートメントの後のステートメントから実行が続けられます。

Exit For ステートメント の任意 の数は、別の方法としてループ内の任意の場所に配置できます。 Exit For は、何らかの条件 (たとえば If…Then ) を評価した後、 Next の直後のステートメントに制御を移す場合によく使用されます。

For…Each…Next ループを別のループの内部に置くことによって、For...Each...Next ループを入れ子にできます。 ただし、各ループの element が一意である必要があります。

注意

Next ステートメント内の element を省略すると、element が含まれる場合と同じように実行が続けられます。 対応する For ステートメントの前で Next ステートメントが検出された場合は、エラーが発生します。

Variant はユーザー定義型を含むことができないため、ユーザー定義型の配列では For...Each...Next ステートメントを使用できません。

次の例では、For Each...Next ステートメントを使用して、コレクション内のすべての要素の Text プロパティで文字列 "Hello" があるかどうか検索しています。 この例では、MyObject はテキストに関するオブジェクトであり、MyCollection コレクションの要素です。 どちらも例示のみを目的として使用されている汎用名です。

Dim Found, MyObject, MyCollection 
Found = False    ' Initialize variable. 
For Each MyObject In MyCollection    ' Iterate through each element.  
    If MyObject.Text = "Hello" Then    ' If Text equals "Hello". 
        Found = True    ' Set Found to True. 
        Exit For    ' Exit loop. 
    End If 
Next

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。