For Nextとは、指定した初期値から最終値まで繰り返して処理(ループ処理)を行うことができる命令です。
途中でループを抜けるには、Exit Forを使います。
構文:
For カウンタ変数 = 初期値 To 最終値 [Step 増分]
…
[Exit For]
Next [カウンタ]
- [Step 増分]は省略できます。省略すると増分は1になります。
- [カウンタ]は省略できます。
● For Nextの使用例
下がもっとも基本的な使用例です。
For Next内の処理の書き方は、通常下のように字下げしル-プ内の処理であることが分かるようにします。
このように同列の処理を字下げすることで、プログラムが見やすくなりデバッグもやり易くなります。
- カウンタ変数iに初期値5をセットし、最終値の5になるまでループします。 なので5回処理を行うことになります。
- 実行すると、イミディエイトウィンドウでカウンタ変数iが1から5になっているのが分かります。
Sub MyForNext()
Dim i As Long
For i = 1 To 5
Debug.Print i
Next
End Sub
実際の使い方は、下のようにFor Next内で処理を行います。
1から10までを足し算させています。
j=1+2+3+ … + 10になります。
10までならいいですが、例えば1000まで足し算させるとなると、For Nextのようなループ処理が使えないと大変になってしまいます。
Sub MyForNext()
Dim i As Long
Dim j As Long
j = 0
For i = 1 To 10
j = j + i
Next
Debug.Print j
End Sub
● Stepの使用例
Stepは下のように増分が指定できます。
増分は2に指定しているので、カウンタ変数iは1~3~5になります。
なので3回ループします。
もしStep 6に指定した場合、カウンタ変数iは1~6になるので、ループは1回になります。
Sub MyForNext()
Dim i As Long
For i = 1 To 5 Step 2
Debug.Print i
Next
End Sub
下のように増分にマイナスを指定することもできます。
増分を-1に指定しているので、カウンタ変数iは5から-1ずつ減算されます。
Sub MyForNext()
Dim i As Long
For i = 5 To 1 Step -1
Debug.Print i
Next
End Sub
● For Nextから途中で抜ける方法
途中で抜けるには、ループ内にExit Forを挿入します。
IF文を使用し、カウンタ変数iが2を超えたらループを抜けるようにしています。
Sub MyForNext()
Dim i As Long
For i = 1 To 5
If i > 2 Then
Exit For
End If
Debug.Print i
Next
End Sub
● ネストの使用例
ネストとは入れ子の事で、下のようにFor Nextの中にさらにFor Nextを入れているような構造のことです。
カウンタ変数iが1回ループする間に、カウンタ変数jは3回ループすることになります。
Sub MyForNext()
Dim i As Long
Dim j As Long
For i = 1 To 3
For j = 101 To 103
Debug.Print i & " - " & j
Next
Next
End Sub