カテゴリ: Excel VBA 更新日: 2026/02/13

VBAのExit文の使い方を完全ガイド!Exit Sub/For/Doの違いと使いどころ

Exit文の使い方!Exit Sub/Function/For/Doの違いと使いどころ
Exit文の使い方!Exit Sub/Function/For/Doの違いと使いどころ

先生と生徒の会話形式で理解しよう

生徒

「VBAで処理の途中で『あ、もうこれ以上進まなくていいや』ってなったとき、強制的に終わりにする方法はありますか?」

先生

「そんなときは Exit 文を使うと便利ですよ。マクロ全体を終了させたり、繰り返し処理だけを途中で抜け出したりすることができるんです。」

生徒

「それって、もしものときにすごく役立ちそうですね。具体的にどう使い分けるんですか?」

先生

「場所に合わせていくつかの種類があります。基本から丁寧に解説していきますね!」

1. Exit文とは?処理を途中で切り上げる「非常ボタン」

1. Exit文とは?処理を途中で切り上げる「非常ボタン」
1. Exit文とは?処理を途中で切り上げる「非常ボタン」

Excel VBA(エクセル・ブイビーエー)の Exit(エグジット)文とは、実行中のプログラムを、特定の場所で強制的に終了させて抜け出すための命令です。日本語で「出口」という意味がある通り、処理の流れから外に出るためのものです。

プログラミング未経験の方にとって、一度始まった処理は最後まで動かさなければならないと思いがちですが、実務では「エラーが見つかったから中止したい」「探していたデータが見つかったから、残りの計算は飛ばしたい」という場面が非常に多いです。そんなときに Exit文 は、効率的でミスのないプログラムを作るための「非常ボタン」や「ショートカット」として活躍します。

2. マクロ全体を終了させる「Exit Sub」

2. マクロ全体を終了させる「Exit Sub」
2. マクロ全体を終了させる「Exit Sub」

一番よく使われるのが Exit Sub(エグジット・サブ) です。これは、現在実行しているマクロ(Subプロシージャ)を、その時点で完全に終わらせる命令です。

例えば、入力された値を確認して、もし空っぽだったら「処理を中断します」と警告してマクロを終了させる、といった使い方が一般的です。これを使わないと、空っぽのデータで計算が進んでしまい、パソコンがエラーで止まってしまう可能性があります。


Sub CheckInput()
    ' セルA1が空っぽかどうかを確認します
    If Range("A1").Value = "" Then
        MsgBox "A1セルに文字を入れてください。マクロを終了します。"
        ' ここでマクロを強制終了!
        Exit Sub
    End If
    
    ' A1に値がある場合だけ、以下の処理が動きます
    MsgBox "入力確認OKです:" & Range("A1").Value
End Sub

このように、条件分岐(If文) と組み合わせて使うことで、無駄な処理を防ぐことができます。

3. 繰り返し処理を抜ける「Exit For」

3. 繰り返し処理を抜ける「Exit For」
3. 繰り返し処理を抜ける「Exit For」

次に重要なのが、Exit For(エグジット・フォー) です。これは For...Next という繰り返し(ループ)処理の途中で、「もうこれ以上繰り返さなくていい」と判断したときに使います。

例えば、1000行あるデータの中から特定の名前を探しているとします。もし10行目で見つかったら、残りの990行をチェックするのは時間の無駄ですよね。そこですぐにループを抜けるために Exit For を使います。


Sub FindName()
    Dim i As Integer
    ' 1行目から10行目まで探します
    For i = 1 To 10
        ' もし「田中」さんが見つかったら
        If Cells(i, 1).Value = "田中" Then
            MsgBox i & "行目に田中さんを見つけました!"
            ' 見つかったので、繰り返しを途中で終了します
            Exit For
        End If
    Next i
End Sub

これを活用することで、Excelの動作が軽くなり、大量のデータを扱う際も高速に処理が終わるようになります。

4. 無限ループの救世主「Exit Do」

4. 無限ループの救世主「Exit Do」
4. 無限ループの救世主「Exit Do」

VBAには Do WhileDo Until といった、条件を満たすまでずっと繰り返す命令があります。これを Doループ と呼びます。条件の設定を間違えると、永遠に処理が終わらない「無限ループ」という恐ろしい状態になることがありますが、そんな時も Exit Do(エグジット・ドゥ) で脱出路を作っておけます。


Sub LoopEscape()
    Dim count As Integer
    count = 1
    
    Do
        Cells(count, 2).Value = count & "回目の書き込み"
        count = count + 1
        
        ' 5回目でループを抜けるように設定
        If count > 5 Then
            Exit Do
        End If
    Loop
    
    MsgBox "ループを抜けました。"
End Sub

処理の途中で特定の状況(データの終わりなど)を検知して安全に止めるために欠かせない命令です。

5. 自作関数の結果を返す「Exit Function」

5. 自作関数の結果を返す「Exit Function」
5. 自作関数の結果を返す「Exit Function」

VBAでは、自分で独自の関数(計算式のようなもの)を作ることができます。これを Function(ファンクション)プロシージャと呼びます。Exit Function(エグジット・ファンクション) は、その関数の途中で計算結果を確定させて終わらせたいときに使います。


Function CheckEven(num As Integer) As String
    ' もし数字が0だったら「不明」として即終了
    If num = 0 Then
        CheckEven = "判定不能"
        Exit Function
    End If
    
    ' 2で割り切れるかどうかで偶数か奇数か判定
    If num Mod 2 = 0 Then
        CheckEven = "偶数"
    Else
        CheckEven = "奇数"
    End If
End Function

「特定の特殊なケースだけ先に処理して、残りの複雑な計算は飛ばしたい」という場面で非常に便利です。

6. Exit文とEnd文の違いを知っておこう

6. Exit文とEnd文の違いを知っておこう
6. Exit文とEnd文の違いを知っておこう

初心者の方がよく混同するのが Exit SubEnd です。一見どちらも終わらせる命令に見えますが、実は大きな違いがあります。パソコン初心者の方もここだけはしっかり押さえておきましょう。

  • Exit Sub: 今動かしているマクロだけを終了します。もし、そのマクロを呼び出している別のマクロがあれば、そちらの続きは実行されます。
  • End: 動いているすべてのマクロを、その瞬間に、跡形もなく完全に強制停止させます。

End は非常に強力で、変数の値などもすべて消えてしまうため、基本的には Exit Sub を使うのが安全です。テレビの「電源ボタンを切る」のがExit Subなら、「コンセントをいきなり抜く」のがEnd、というくらいの違いがあります。

7. 実務で役立つExit文の使いどころまとめ

7. 実務で役立つExit文の使いどころまとめ
7. 実務で役立つExit文の使いどころまとめ

Exit文をどこで使うべきか、実務でよくあるパターンをまとめました。これを意識するだけで、あなたのVBAコードはグッとプロっぽくなります。

種類 使いどころ
Exit Sub セルの値が足りない、パスワードが違うなど、前提条件が合わないときの中断。
Exit For 名簿の中から目的の人を見つけたとき、残りの名簿を見るのを止めるとき。
Exit Do 「次のデータへ行く」処理で、次のセルが空っぽだったときにループを抜けるとき。
Exit Function 入力された値がエラー値だった場合に、計算を行わずに結果を返すとき。

8. Exit文を使うときの注意点:書きすぎに注意!

8. Exit文を使うときの注意点:書きすぎに注意!
8. Exit文を使うときの注意点:書きすぎに注意!

とても便利なExit文ですが、使いすぎには注意が必要です。あちこちに「出口」を作ってしまうと、プログラムの流れが「あっちへ行ったりこっちへ行ったり」と複雑になり、後で読み返したときに混乱の原因になります。

理想は 「入口一つ、出口一つ」 です。どうしても必要な場合や、エラーチェックを最初に行うとき(これをガード句と言います)に絞って使うのが、綺麗なプログラムを書くコツです。パソコンの操作に不慣れなうちは、まずは If...Then...Exit Sub の形から練習してみるのが一番の近道ですよ!

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法
New2
Office Scripts
Office Scripts普及の歴史とMicrosoftの方向性!Excel自動化が進化してきた流れをやさしく解説
New3
Excel VBA
Excel VBA関数を用途別に作成!計算・文字列処理の基本を初心者向けに解説
New4
Office Scripts
Office Scriptsで条件付き書式を自動化!数値変化に応じてExcelの書式を自動更新する方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excelマクロのセキュリティ設定の基本!安全に実行するための信頼センター設定まとめ
No.2
Java&Spring記事人気No2
Office Scripts
Office Scriptsでできること・できないことを完全整理!Excel自動化の基本と限界をやさしく解説
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAとOffice Scriptsの違いを比較!初心者でもわかる学ぶべきスキル
No.4
Java&Spring記事人気No4
Excel VBA
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBA基本文法の総まとめ!初心者が必ず押さえるべき20の基礎ポイント完全ガイド
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsで条件付き書式を自動化!Excel自動化初心者向けスクリプト操作の基本
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法