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