条件により繰り返し処理を行う場合、特に繰り返す回数が決まっている場合などはfor文を使用します。
VB/VBAではFor~Nextステートメントを使用して、以下のように記述します。
【For~Nextステートメントによる制御構文】
For カウンタ変数 = 初期値 To 最終カウンタ値
繰り返し処理
Next
For~Nextステートメントはカウンタ変数に初期値を設定し、処理を繰り返すことでカウンタ変数が1ずつカウントアップされます。最終的にカウンタ変数が最終カウンタ値になった時点でループを抜けます。カウントアップ値は通常1ですので、カウンタ変数の初期値に1を設定した場合、最終カウンタ値は繰り返し処理数となります。
【単純なFor~Nextステートメントの使用方法】
For i = 1 To 10
繰り返し処理
Next
上記例では繰り返し処理を10回繰り返します。
ただし、カウントアップ値はStep文で指定することもできます。以下例ではカウンタ値が2ずつカウントアップされますので、繰り返し処理は5回実行されます。
【Step値を指定した場合のFor~Nextステートメントの使用方法】
For i = 1 To 10 Step 2
繰り返し処理
Next
また、条件により途中で処理を抜ける場合は、Exitステートメントを使用します。
【Exitステートメントによるループ処理の中断】
Dim i, sum As Integer
For i = 1 To 10
If sum > 20 Then
Exit For
End If
sum = sum + i
Next
上記例ではカウンタ変数iの合計値をsum変数に加算し、sum変数が20を超えた時点でforループを抜けます。
サンプルプログラム
Public Sub sample()
Dim varArray1() As Variant
Dim varArray2() As Variant
varArray1 = Array("ロンドン", "東京", "パリ", "ニューヨーク")
varArray2 = Array("シンガポール", "上海", "ソウル", "東京")
For i = 0 To UBound(varArray1)
For j = 0 To UBound(varArray2)
If varArray1(i) = varArray2(j) Then
Debug.Print varArray1(i)
End If
Next j
Next i
End Sub
※ 上記例では二つの配列をforループで検索し、値が一致するものを出力します。二つの配列で共通するのは「東京」だけですので、結果は「東京」のみ出力されます。