Excel VBA | Exit Sub と Exit Function の基礎

VBA
スポンサーリンク

ループを抜ける 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
    • 条件分岐で「答えが決まったら即返す」
    • 複雑な計算を最後までやらずに済む
    • 複数条件の判定をシンプルに書ける

練習問題

  1. Exit Sub 練習
    • A1セルに入力された数値が「負の数」なら「不正」と表示して終了。
    • 正の数なら「平方」を計算して表示する。
  2. Exit Function 練習
    • 引数として渡された点数(0〜100)に応じて「評価」を返す関数を作る。
      • 80以上 → “優”
      • 60以上 → “良”
      • 40以上 → “可”
      • それ未満 → “不可”
    • 最初に条件を満たしたら Exit Function で終了する。

模範解答と解説

問題:
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 と違い、「サブルーチンや関数そのもの」を終わらせる。
  • 実務では「入力チェック」「条件判定」「早期リターン」によく使う。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました