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

  • 概要: 現在のinumの値をイミディエイトウィンドウに出力します。デバッグ情報として使います。

Loop

  • 概要: Do Untilループの終了を示します。条件が満たされるまで、ループの先頭に戻ります。

Next

  • 概要: Forループの次のイテレーションに進みます。iの値が10に達するまで、ループの先頭に戻ります。

End Sub

  • 概要: ForLoopSampleサブルーチンの終了を示します。

処理の流れ

  1. iが1から10までの値を取るForループが開始されます。
  2. 各イテレーションで、numが1に初期化されます。
  3. numが2になるまでのDo Untilループが開始されます。
  4. ループ内で、iが5の場合、Exit Forステートメントが実行され、外側のForループを終了します。
  5. numに1が加算されます。
  6. Debug.Printで現在のinumの値がイミディエイトウィンドウに出力されます。
  7. Do Untilループが終了し、Forループの次のイテレーションに進みます。
  8. このプロセスがiが10に達するまで繰り返されます。ただし、iが5になるとExit Forが実行され、ループが終了します。

サンプル出力

イミディエイトウィンドウに次のような出力が表示されます(iが5になるとループが終了します):

 1 2
 2 2
 3 2
 4 2

Follow me!