HOME
For 文とは、初期値から最終値までの範囲で処理を繰り返す場合に用いる文です。For Each 文とは、配列やコレクションなど、グループの各要素に対して繰り返し処理を行う場合に使用します。
For 文とは、初期値から最終値までの範囲で処理を繰り返す場合に用いる文です。For 文の構文は以下のとおりです。
For 変数 = 初期値 To 最終値
...
Next 変数
For 文の具体的な例としては、以下のようなプログラムになります。
Dim sum As Integer
Dim i As Integer
sum = 0
For i = 1 To 10
sum = sum + i
Next i
カウンターを任意の数だけ増減させたい場合は、Step を付け加えます。上記のプログラムでは Step を省略しているため、カウンターは +1 ごと増加しますが、以下のプログラムでは、カウンターは +2 ごと増加します。
Dim sum As Integer
Dim i As Integer
sum = 0
For i = 1 To 10 Step 2
sum = sum + i
Next i
繰り返し文を任意のタイミングで抜けたい場合は、Exit for を使用します。
Dim sum As Integer
Dim i As Integer
sum = 0
For i = 1 To 10
sum = sum + i
if sum = 5 Then
Exit For
End If
Next i
For 文では Next を省略した場合、コンパイルエラーとして「Next に対応する For がありません。」と表示されます。
Dim sum As Integer
Dim i As Integer
sum = 0
For i = 1 To 10
sum = sum + i
'' Next i が定義されていない
また、「Next に対応する For がありません。」のメッセージは For 文の中にある If 文の End If がない場合にも発生します。以下のプログラムの場合、Next が定義されているにも関わらず、原因が別の場所にあるためデバッグが難しくなります。
Dim sum As Integer
Dim i As Integer
sum = 0
For i = 1 To 10
sum = sum + i
if sum = 5 Then
Exit For
'' End If が定義されていない。
Next i
For Each 文とは、配列やコレクションなど、グループの各要素に対して繰り返し処理を行う場合に使用します。For 文とは異なり、繰り返しの初期値と最終値を指定する必要がありません。ただし、For Each 文では要素を受け取る変数の型はバリアント型、またはオブジェクト型で指定する必要があります。
Dim List() As Variant
List = Array(1, 2, 3, 4, 5)
Dim Var As Variant
For Each Var In List
Debug.Print (Var)
Next Var