For...Next文を使用して、文のブロックを特定の回数実行できます。ループの場合は、ループの繰返しごとに値が増減するカウンタ変数を使用します。
次の例では、MyProcというプロシージャを50回実行します。For文では、カウンタ変数xおよびその開始値と終了値を指定します。Next文は、カウンタ変数を1ずつ増分します。
次の例は、nextループの使用方法を示しています:
例1:
Sub DoMyProc50Times()
Dim x
For x = 1 To 50
'This loop executes 50 times
Next
End Sub
Stepキーワードを使用すると、指定した値でカウンタ変数を増減できます。次の例では、ループが繰り返されるたびに、カウンタ変数jが2ずつ増分されます。ループが終了すると、合計は2、4、6、8および10の合計になります。
例2:
Sub TwosTotal()
Dim j, total
total = 0
For j = 2 To 10 Step 2
total = total + j
Next
'The total is 30
End Sub
カウンタ変数を減らすには、負のStep値を使用します。開始値より小さい終了値を指定する必要があります。次の例では、ループが繰り返されるたびに、カウンタ変数myNumが2ずつ減少します。ループが終了すると、合計は16、14、12、10、8、6、4および2の合計になります。
例3:
Sub NewTotal()
Dim myNum, total
total = 0
For myNum = 16 To 2 Step -2
total = total + myNum
Next
'The total is 72
End Sub
カウンタが終了値に達する前に、Exit For文を使用してFor...Next文を終了できます。通常は、エラーが発生した場合など、特定の状況でのみ終了する必要があるため、If...Then...Else文のTrue文ブロックでExit For文を使用する必要があります。条件がFalseの場合、ループは通常どおり実行されます。
例4:
Sub ExitForExample()
Dim i, total
total = 0
For i = 1 To 10
total = total + i
If i = 5 Then Exit For
Next
'Exited loop early. Total is 15
End Sub
例5:
Sub DecreaseWithExit()
Dim n, sum
sum = 0
For n = 20 To 0 Step -2
sum = sum + n
If n = 10 Then Exit For
Next
'Exited loop early. sum is 90
End Sub