【VBA】Forループを途中で抜ける方法(Exit)
今回はForループを途中で抜ける方法を紹介します。
Forループを途中で抜けるにはExitステートメントを使用するのですが、DoループやSubを抜けるときにも同じくExitステートメントを使うので併せてご覧ください。
抜ける対象 | ステートメント |
---|---|
For | Exit For |
Do | Exit Do |
Sub | Exit Sub |
Forループを途中で抜ける方法(Exit For)
Sub Sample1()
Dim i As Long
For i = 1 To 100
'3の倍数だったらループを抜ける
If i Mod 3 = 0 Then
Exit For 'Exitステートメント
End If
Debug.Print i
Next
End Sub
このコードはiが3の倍数であればループを抜けるようになっています。
「If i Mod 3 = 0 Then」この部分でiが3で割り切れるかを確認して、Exit Forでループを抜けています。
気になる方はステップ実行して、処理の流れを確認してみてください。
このようにIf文とExit Forを組み合わせることでループを抜けます。
Doループを途中で抜ける方法(Exit Do)
Sub Sample2()
Dim i As Long
i = 1
Do
'3の倍数だったらループを抜ける
If i Mod 3 = 0 Then
Exit Do 'Exitステートメント
End If
Debug.Print i
i = i + 1
Loop
End Sub
このコードは先ほどのForループの処理をDoループに書き換えたものです。
こちらも「If i Mod 3 = 0 Then」この部分でiが3で割り切れるかを確認して、Exit Doでループを抜けています。
Doループの使い方については↓の記事をご覧ください。
Subプロシージャを途中で抜ける方法(Exit Sub)
ForループやDoループと同じようにSubプロシージャも途中で抜けることができます。
Exit Subを行うと、実行中のSubプロシージャが途中終了します。
Sub Sample3()
If MsgBox("マクロを実行しますか?", vbYesNo) = vbNo Then
Exit Sub
End If
End Sub
このコードは、最初にマクロを実行するか確認するサンプルとなっています。
メッセージボックスでマクロを実行するか確認し、「いいえ」であればSubプロシージャを終了しています。