For文 VBAで自動化 VBAテクニック集 VBA一覧 文法・構文

【VBA】For文:二重ループから抜ける方法

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プログラムを作成できます。

-For文, VBAで自動化, VBAテクニック集, VBA一覧, 文法・構文