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 のサポートおよびフィードバックを参照してください。