For Each...Next
Synopsis
For Each element In group [statements] [Exit For] [statements] Next [element]
引数
For Each...Next 文の構文は、以下の部分で構成されています。
element | コレクションまたは配列の要素の繰り返しに使用する変数。コレクションの場合は、要素に Variant 変数、汎用オブジェクト変数、または特定のオブジェクト変数のみを指定できます。配列の場合は、要素に Variant 変数のみを指定できます。 |
group | コレクションまたは配列のオブジェクトの名前。 |
statement | グループの各項目に対して実行する単独または複数の文。 |
概要
group に 1 つでも要素があれば、For Each ブロックが始まります。一度ループが始まると、ループ内のすべての文が group の最初の要素に対して実行されます。group にまだ要素がある限り、ループの文はそれぞれの要素に実行され続けます。group にそれ以上要素が存在しない場合、ループは終了し、Next 文の後に続く文で実行を継続します。
Exit For は、終了するための補助的な手段であり、For Each...Next または For...Next 制御構造内でのみ使用できます。Exit For 文は、ループの任意の場所にいくつでも配置することができます。Exit For は、条件の評価に使用されることが多く (例えば If...Then)、制御を Next の直後の文に渡します。
他の For Each...Next ループに、For Each...Next ループを 1 つ配置することで For Each...Next ループを入れ子にできます。ただし、各ループの要素は一意である必要があります。
For Each と Split 関数
Split 関数は、 For Each...Next 文の group 引数として直接使用することはできません。まず、Split の返り値を配列変数に割り当てる必要があります。次に、この配列変数を For Each...Next 文の group 引数として指定することができます。
例
以下の例は、For Each...Next 文の使用法を示しています。
Erase ^RandomData
' Generate some random nodes
For i = 65 to 90
If Rnd(i) > .5 Then
^RandomData(Chr(i),"subnode")="data"
Else
^RandomData(Chr(i))="data"
End If
Next
PrintLn "Traverse forwards"
For each k1 in ^RandomData
PrintLn k1
For each k2 in ^RandomData(k1)
Print k1,vbTAB,k2
If Exists(^RandomData(k1,k2)) and vbHasValue Then
Print " = ",^RandomData(k1,k2)
End If
PrintLn
Next
Next
メモ
Next 文の要素を省略しても、含んでいるかのように実行が継続されます。Next 文が対応する For 文より前にあると、エラーが発生します。
関連項目
-
Exit 文