VBA Exit SubおよびFunction

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 4月 7, 2022

VBAでは、SubやFunctionを終了させるのに Exit SubまたはExit Functionコマンドを使用します。

Exit Sub
Exit Function

コードの実行がExit Sub または Exit Functionに到達すると、SubまたはFunctionを終了して、他のコードの実行を継続します。

エラー時にSubを終了させる方法を知りたい方は、こちらのリンクをクリックしてください:VBA エラー時にSubを終了する

コード実行全体を終了させる方法を知りたい方は、このリンクをクリックしてください:VBA 全体を終了する

VBAでSubプロシージャを終了させる

この例では、Subの中でExit Subコマンドを使用するとどうなるかを説明します。ExitSubというSubを作成し、その中にExit Subコマンドを記述しています。CallExitSubという SubがこのSubを呼び出します。以下がそのコードです。

Private Sub ExitSub()

    Dim i As Integer

    For i = 1 To 10  
        If i = 5 Then
            Exit Sub
            MsgBox "iの値は" & i
        End If
    Next i 

End Sub


Private Sub CallExitSub()
    Call ExitSub
    MsgBox "Subを終了します"  
End Sub

ExitSubでは、まずiの値が10以下の場合にForループに入ります。

For i = 1 To 10

Next i

その後、iの値が5であるかどうかをIfコマンドでチェックします。値が5であれば、Subを終了して、iの値を表示したメッセージボックスを表示します。

If i = 5 Then
     Exit Sub
     MsgBox "iの値は" & i
End If

条件を満たさない場合は、次の文でiを1つ増やし、再びForループに入ります。

Next i

CallExitSubでは、まずSub ExitSubを呼び出します。

Call ExitSub

その後、メッセージボックスを返します。

MsgBox "Subを終了します"

CallExitSubを実行すると、最初にExitSubが呼び出されます。このコードをデバッグモードで実行すると、ループを5回通過することがわかります。5回目の繰り返しで、変数iの値が5になり、Ifステートメントの中にコードが入ります。これで、Sub ExitSubが終了してCallExitSubに戻りました。次に実行される行は、MsgBox “Exit Sub” です。

vba exit sub

このように、ExitSubは Exit Sub コマンドの直後に終了するので、MsgBox “iの値は”  & iは実行されないことになります。

VBAで関数を終了させる

VBAの関数の終了は、Subの終了と似ていますが、コマンドがExit Functionであることが特徴です。この例では、整数を返すExitFuncを作成しました。Sub CallExitFunctionは 、この関数を呼び出します以下はそのコードです。

Private Function ExitFunc() As Integer

    Dim i As Integer

    For i = 1 To 10
        If i = 5 Then
            ExitFunc = i
            Exit Function
        End If
    Next i

End Function


Private Sub CallExitFunction()
    Dim intFunc As Integer
    intFunc = ExitFunction()
    MsgBox "intFuncの値は" & intFunc

End Sub

ExitFuncでは、まずiの値が10以下の場合にForループに入ります。

For i = 1 To 10

Next i

その後、iの値が5と等しいかどうかをIfコマンドでチェックします。もし値が5であれば、iの値を関数resultに代入し、関数を終了します。

If i = 5 Then
    ExitFunc = i
    Exit Function
End If

条件を満たさない場合は、次の文でiを1つ増やし、再びForループに入ります。

Next i

CallExitFunctionでは、まずExitFuncという関数を呼び出します。そのために、変数intFuncをinteger型で宣言し、ExitFunc関数の結果を代入する必要があります。

Dim intFunc As Integer

intFunc = ExitFunction()

その後、intFunc の値をメッセージボックスに返します。

MsgBox "intFuncの値は" & intFunc

CallExitFunctionを実行すると、まずExitFuncという関数が呼び出されます。このコードをデバッグモードで実行すると、ループを5回通過することがわかります。5回目の繰り返しで、変数iの値が5になり、Ifステートメントの中にコードが入ります。ここでExitFuncの値がiになり、関数が終了してCallExitFunctionに戻ります。次に実行される行は、MsgBox “The value of intFunc is ” & intFunc です。

vba exit function

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples