【Excelマクロ】「Exit For」「Exit Sub」などの脱出構文の使いどころ

VBAでマクロを書いていると、「ここで処理をやめたい」と思うことがあります。

たとえば、目的のデータが見つかった瞬間に検索ループを止めたいときや、エラーが発生したらそれ以上処理を続けたくないときなどです。

そんなときに使えるのが、「脱出構文」と呼ばれる Exit ForExit Sub などの命令です。

今回はそれぞれの使い方と使いどころを、具体例つきでわかりやすく解説していきます。

「Exit For」でループを途中で抜ける

Exit For は、For〜Next のループの途中で処理を打ち切るときに使います。

例:A列に「完了」と書かれたセルを見つけたら、そこで終了

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

このコードでは、A列を上から順に調べ、「完了」という文字が見つかった時点で Exit For によってループを抜けます。

これにより、無駄に最後まで回さずに済み、処理時間も短縮できます。

「Exit Sub」でマクロ全体を途中終了

Exit Sub は、マクロ全体(Subプロシージャ)を途中で終わらせたいときに使います。

例:入力が空白なら処理を中止

Sub ShowMessage()

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

    If msg = "" Then
        MsgBox "メッセージが空白のため中止します"
        Exit Sub
    End If

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

End Sub

このコードでは、A1セルに何も入力されていなかったら、警告を出してそこで処理を止めます。

Exit Sub を使うことで、その後の処理が一切実行されずに安全に終了できます。

応用:Exit DoExit Function も同じ考え方

他にも、以下のような脱出構文があります。

構文脱出対象よく使う場面
Exit ForFor〜Next検索処理や条件一致で止めたいとき
Exit DoDo〜Loop条件ループから脱出したいとき
Exit SubSubプロシージャ異常時やキャンセル時に処理を打ち切る
Exit FunctionFunction計算処理などで早めに値を返したいとき

基本的にはすべて、「今の処理の流れを止めるための脱出口」として使うことができます。

脱出構文を使うメリット

「Exit」系の構文を使うことには、実務上の次のようなメリットがあります。

1. 無駄な処理を避けられる

たとえば10,000件のデータを検索しているのに、1件目で見つかったあとも延々と処理を続けるのは非効率です。

Exit For を使えば、処理時間の削減につながります。

2. 安全に処理を止められる

入力チェックやエラー検知に Exit Sub を使えば、余計なエラーや処理ミスを未然に防げます

3. コードの見通しがよくなる

「ここで終わりたい」という意図がコードに明確に書かれているため、読み手にとっても理解しやすくなります

まとめ:早めの脱出がスマートな処理のコツ

最後に、要点をまとめます。

  • Exit For はループを途中でやめたいときに使う
  • Exit Sub はマクロ全体を早く終わらせたいときに使う
  • 他にも Exit DoExit Function など、処理単位で「途中脱出」が可能
  • 無駄な処理を省き、保守性と効率を高められる

VBAでは、最後まで全部処理しようとするよりも、必要なときだけ最小限で終わるコードの方がスマートです。

「もう処理しなくていい」と思ったら、迷わず Exit を使って、スッキリしたマクロを書いてみましょう。

コメントする

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

上部へスクロール