2重ループの内側から一気に外側のループを抜けるには
2重ループの内側から一気に外側のループを抜けるには、異なる繰り返し処理の構文を組み合わせます。以下がサンプルマクロです。
Private Sub ForLoopExit()
    Dim i As Long
    Dim num As Long
    
    For i = 1 To 10
        num = 1
        
        Do Until num = 2
            '条件に合う場合は外側のループも一気に抜ける
            If i = 5 Then Exit For  ' iが5の場合、ループから抜ける
            num = num + 1
            Debug.Print i, num
        Loop
    Next
End Subコード全体の概要
このコードは、ネストされたループ(ForループとDo Untilループ)を使用して、特定の条件が満たされた場合にループを抜けるサブルーチンです。
各部分の説明
Private Sub ForLoopExit()
- 概要: 
ForLoopExitという名前のサブルーチンの開始を示します。 
Dim i As Long
- 概要: 
iという名前の変数を長整数型として宣言します。この変数は外側のForループのカウンタとして使用されます。 
Dim num As Long
- 概要: 
numという名前の変数を長整数型として宣言します。この変数は内側のDo Untilループで使用されます。 
For i = 1 To 10
- 概要: 
iが1から10までの値を取るForループを開始します。 
num = 1
- 概要: 変数
numに値1を代入します。この行はForループ内で毎回実行されます。 
Do Until num = 2
- 概要: 
numが2になるまで繰り返すDo Untilループを開始します。 
If i = 5 Then Exit For
- 概要: 
iが5の場合、外側のForループを終了します。この条件が満たされると、内側のDo Untilループだけでなく、外側のForループも即座に終了します。 
num = num + 1
- 概要: 変数
numに1を加えます。この行は、numが2になるまで毎回実行されます。 
Debug.Print i, num
- 概要: 現在の
iとnumの値をイミディエイトウィンドウに出力します。デバッグ情報として使います。 
Loop
- 概要: 
Do Untilループの終了を示します。条件が満たされるまで、ループの先頭に戻ります。 
Next
- 概要: 
Forループの次のイテレーションに進みます。iの値が10に達するまで、ループの先頭に戻ります。 
End Sub
- 概要: 
ForLoopSampleサブルーチンの終了を示します。 
処理の流れ
iが1から10までの値を取るForループが開始されます。- 各イテレーションで、
numが1に初期化されます。 numが2になるまでのDo Untilループが開始されます。- ループ内で、
iが5の場合、Exit Forステートメントが実行され、外側のForループを終了します。 numに1が加算されます。Debug.Printで現在のiとnumの値がイミディエイトウィンドウに出力されます。Do Untilループが終了し、Forループの次のイテレーションに進みます。- このプロセスが
iが10に達するまで繰り返されます。ただし、iが5になるとExit Forが実行され、ループが終了します。 
サンプル出力
イミディエイトウィンドウに次のような出力が表示されます(iが5になるとループが終了します):
 1 2
 2 2
 3 2
 4 2

