VBAのExit For・Exit Subとは|ループやマクロを途中で止める脱出構文の使い方

VBAで処理を途中で止めたいときは「脱出構文」を使います。ループを抜けたいときは Exit For、マクロ全体を終わらせたいときは Exit Sub が基本です。目的のデータが見つかったり、エラーが起きたりしたタイミングで無駄な処理を止められます。

この記事では、次の内容を順番に解説します。

  • Exit Forの使い方(ループを途中で抜ける)
  • Exit Subの使い方(マクロ全体を途中終了する)
  • Exit Do・Exit Functionなど他の脱出構文

Exit Forとは?

Exit ForFor〜Next のループを途中で抜ける命令です。条件に一致するデータが見つかったタイミングでループを止めたいときに使います。

Sub SearchDone()

    Dim i As Long

    For i = 2 To 100
        If Cells(i, 1).Value = "完了" Then
            MsgBox "完了データを見つけました:" & i & "行目"
            Exit For  ' ここでループを抜ける
        End If
    Next i

End Sub

「完了」が見つかった時点でループが止まります。見つかった後も最後まで回し続けると無駄な処理が増えるので、Exit For で早めに抜けるのがポイントです。

Exit Subとは?

Exit Sub はマクロ全体(Sub〜End Sub)を途中で終わらせる命令です。入力チェックやエラーチェックの後に使うことが多いです。

Sub ShowMessage()

    Dim msg As String
    msg = Range("A1").Value

    ' A1が空白なら処理を中止する
    If msg = "" Then
        MsgBox "メッセージが空白のため処理を中止します"
        Exit Sub
    End If

    MsgBox "入力されたメッセージ:" & msg

End Sub

A1セルが空白だったら警告を出してそこで終了します。Exit Sub の後のコードは一切実行されません。

その他の脱出構文は?

VBAにはループや処理の種類に合わせた脱出構文があります。

  • Exit ForFor〜Next ループを途中で抜ける。
  • Exit DoDo〜Loop ループを途中で抜ける。
  • Exit SubSub〜End Sub のマクロを途中で終わらせる。
  • Exit FunctionFunction〜End Function の処理を途中で終わらせる。

どれも「今の処理の流れを止めて抜け出す」という考え方は同じです。

まとめ

「もうここで処理しなくていい」と思ったタイミングで脱出構文を使うことで、無駄な処理を省いてコードをシンプルにできます。

  • Exit For:Forループを途中で抜ける。データ検索など「見つかったら終わり」の処理に使う。
  • Exit Sub:マクロ全体を途中で終わらせる。入力チェックやエラーチェックに使う。
  • Exit Do:Do〜Loopを途中で抜ける。
  • Exit Function:Function処理を途中で終わらせる。

よくある質問

Exit ForとExit Doの使い分けは?

ループの種類によって使い分けます。For〜Next のループには Exit ForDo〜Loop のループには Exit Do を使います。どちらも「ループを途中で抜ける」という動作は同じです。

Exit Forを使うとNext以降の処理はどうなる?

Exitした時点でループが終了し、Nextの外(ループの次の行)から処理が続きます。Exit Forはループを「抜ける」だけで、マクロ全体を止めるわけではありません。

ネストしたループ(ループの中にループ)で内側だけ抜けるには?

Exit For は直近のループだけを抜けます。外側のループは続きます。外側のループも止めたい場合は、フラグ変数(例:Dim found As Boolean)を使って外側のループ内でも条件チェックをする方法が一般的です。

Exit SubとEnd Subの違いは?

End Sub はマクロの終わりを示す定義で、必ず書く必要があります。Exit Sub はマクロの途中で「ここで終わりにしたい」ときに使う命令です。Exit Sub を書くと、その後の処理を飛ばして End Sub まで一気に進みます。

Exit Subをエラー処理と組み合わせる方法は?

エラーが起きた場合に処理を止めるには On Error GoTo と組み合わせる方法があります。エラーが発生したらジャンプ先のラベルに飛んでメッセージを出し、Exit Sub で終了する形が基本パターンです。


動画で学びたい方へ

「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。

VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。

動画で学ぶExcelマクロ|JIMOVEオンラインスクール

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール