ループを抜ける Exit Do / Exit For と似ていますが、
Exit Sub / Exit Function は「処理全体を途中で終了する」ための命令です。
- Exit Sub → サブルーチン(
Sub ... End Sub)を途中で終了する - Exit Function → 関数(
Function ... End Function)を途中で終了する
Exit Sub の使い方
考え方
- 「この先の処理は不要」と判断したら、そこでサブルーチンを終了する。
- 例えば「入力値が不正なら、これ以上処理しないで終わる」といった場面で使う。
例題:入力チェック
Sub CheckInput()
Dim value As Long
value = Cells(1, 1).Value ' A1セルの値を取得
If value <= 0 Then
MsgBox "入力値が不正です(0以下)"
Exit Sub ' ここで処理を終了
End If
' ここから先は「正しい値」の場合だけ実行される
MsgBox "入力値は " & value & " です"
End Sub
VB解説
- A1セルが0以下なら「不正」として終了。
Exit Subの後は一切実行されない。- 「早めに処理を打ち切る」ことで、無駄な計算やエラーを防げる。
Exit Function の使い方
考え方
- 関数は「値を返す」ための仕組み。
- 途中で「もう答えが決まった」と判断したら、そこで終了できる。
Exit Functionを使うと、以降の処理をスキップして関数を終える。
例題:割引率を返す関数
Function GetDiscount(price As Long) As Double
If price < 1000 Then
GetDiscount = 0 ' 割引なし
Exit Function ' ここで終了
End If
If price < 5000 Then
GetDiscount = 0.05 ' 5%割引
Exit Function
End If
' ここまで来たら 5000円以上
GetDiscount = 0.1 ' 10%割引
End Function
VB解説
Exit Functionにより「条件に当てはまった時点」で終了。- 返す値(
GetDiscount = ...)を設定してから終了するのがポイント。 - これで「複数条件の中から最初に当てはまったもの」を返せる。
実務での使いどころ
- Exit Sub
- 入力チェック(不正なら即終了)
- エラー処理(条件が合わなければ処理を打ち切る)
- 「早期リターン」でコードを読みやすくする
- Exit Function
- 条件分岐で「答えが決まったら即返す」
- 複雑な計算を最後までやらずに済む
- 複数条件の判定をシンプルに書ける
練習問題
- Exit Sub 練習
- A1セルに入力された数値が「負の数」なら「不正」と表示して終了。
- 正の数なら「平方」を計算して表示する。
- Exit Function 練習
- 引数として渡された点数(0〜100)に応じて「評価」を返す関数を作る。
- 80以上 → “優”
- 60以上 → “良”
- 40以上 → “可”
- それ未満 → “不可”
- 最初に条件を満たしたら
Exit Functionで終了する。
- 引数として渡された点数(0〜100)に応じて「評価」を返す関数を作る。
模範解答と解説
問題:
A1セルに入力された数値が「負の数」なら「不正」と表示して終了。
正の数なら「平方」を計算して表示する。
模範解答
Sub PracticeExitSub()
Dim value As Long
value = Cells(1, 1).Value ' A1セルの値を取得
If value < 0 Then
MsgBox "不正な入力です(負の数)"
Exit Sub ' ここで処理を終了
End If
' 正の数の場合だけここに進む
MsgBox "平方は " & (value ^ 2) & " です"
End Sub
VB解説
Exit Subは「サブルーチン全体を終了」する命令。- 条件に当てはまったら即終了するので、後続の処理は実行されない。
- これにより「不正な入力は早めに打ち切る」ことができる。
問題:
引数として渡された点数(0〜100)に応じて「評価」を返す関数を作る。
- 80以上 → “優”
- 60以上 → “良”
- 40以上 → “可”
- それ未満 → “不可”
模範解答
Function GetGrade(score As Long) As String
If score >= 80 Then
GetGrade = "優"
Exit Function
End If
If score >= 60 Then
GetGrade = "良"
Exit Function
End If
If score >= 40 Then
GetGrade = "可"
Exit Function
End If
' ここまで来たら40未満
GetGrade = "不可"
End Function
VB解説
Exit Functionは「関数全体を終了」する命令。- 値を返すときは
GetGrade = ...を設定してから終了する。 - 条件に当てはまった時点で終了するので、無駄な判定をしない。
- 「早期リターン」でコードがシンプルになる。
まとめ
- Exit Sub → サブルーチンを途中で終了。入力チェックやエラー処理に便利。
- Exit Function → 関数を途中で終了。条件分岐で「答えが決まったら即返す」場面に便利。
- どちらも「早期終了」を可能にし、コードを読みやすく、効率的にする。
💡 まとめ
- Exit Sub / Exit Function は「処理全体を途中で終了する」ための命令。
- ループを抜ける Exit Do / Exit For と違い、「サブルーチンや関数そのもの」を終わらせる。
- 実務では「入力チェック」「条件判定」「早期リターン」によく使う。


