For...Nextの使用

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