Excel VBAでは、入れ子になった(二重の)Forループが頻繁に使用されます。特定の条件が満たされた際にこれらのループから同時に抜け出す必要がある場合、適切な手法を用いることが重要です。この記事では、Exit Forを利用した二重ループからの抜け出し方を説明します。
二重ループから抜ける基本構文
二重ループから一度に抜けるための基本的な構文は以下の通りです。
For 外側の変数 = 開始値 To 終了値
For 内側の変数 = 開始値 To 終了値
If 条件式 Then
Exit For ' 内側のループを抜ける
End If
' 内側の処理
Next 内側の変数
If 条件式 Then Exit For ' 外側のループも抜ける
' 外側の処理
Next 外側の変数
Exit Forは現在実行中のループを直ちに終了させます。条件が内側のループで満たされた場合、内側のループを抜けた後、外側のループも直ちに終了させるために再び条件を評価します。
二重ループから抜ける実践的な例
例1【データ検索で二重ループを抜ける】
以下のVBAコードは、特定の値を二次元配列内で検索し、その値が見つかったら両方のループを抜ける例です。
Sub ExitDoubleLoop()
Dim arr(1 To 5, 1 To 5) As Integer
Dim i As Integer, j As Integer
Dim target As Integer
Dim found As Boolean
target = 25 ' 探している値
found = False
' 配列の初期化
For i = 1 To 5
For j = 1 To 5
arr(i, j) = i * j
If arr(i, j) = target Then
MsgBox "Found " & target & " at (" & i & ", " & j & ")"
found = True ' フラグを設定
Exit For
End If
Next j
If found Then Exit For ' フラグを確認
Next i
End Sub
このサンプルコードでは、targetが配列内で見つかった場合に、内側のループと外側のループの両方を直ちに終了します。foundフラグを使って、内側のループで条件が満たされたときに外側のループも抜けられるようにしています。
このため、不要な処理は一切行われません。
まとめ
二重ループから一度に抜け出すためのExit Forステートメントの使用は、VBAプログラミングにおいて重要なテクニックの一つです。これにより、プログラムの効率を大幅に向上させ、必要ない処理時間の削減が可能となります。正しい条件下でこの機能を活用することで、より効率的なVBAプログラムを作成できます。