【EXCEL VBA】プログラムを強制終了する Exitステートメント・Endステートメント

スポンサーリンク

はじめに

ひらちんです。

VBAのプログラムを強制的に終了する命令の紹介です(^o^)

エラーの分岐で終了點せたかったり、ループの中の条件によってそのプロシージャを終了したかったり、色々な場面で使います。

スポンサーリンク

Exitステートメント

構文

Exit 終わらせたいステートメント

”Exit”の後に、終わらせたいステートメント(SubとかFunctionとかForとか)を記述することで、その命令から抜けることが出来ます。

例えば、次のコードのように”呼び出されるプロシージャ”を呼び出した場合、”呼び出されるプロシージャ”の中の”Exit Sub”に到達した時点で、”呼び出されるプロシージャ”の実行は終了しますので、「Debug.Print “ここまで来たよ”」は実行されずに”sample”に戻ります。

Sub sample()

    Call 呼び出されるプロシージャ
    Debug.Print "終了"    

End Sub

Sub 呼び出されるプロシージャ()

    Exit Sub 'このSubプロシージャを抜ける
    Debug.Print "ここまで来たよ"

End Sub

どのような動きになるか確認します。

“sample”プロシージャを実行します。

For Nextステートメントの中で、「ある条件に合致したらその後はもう処理しなくてい良いよ」みたいになときには、”Exit For“で抜けることが出来ますね。

Sub sample()

    Dim i As Long
    For i = 1 To 1000
    
        If i = 10 Then
            Debug.Print i & "になったよ!"
            Exit For ' 10になったらFor Nextを抜ける
        End If
        
        Debug.Print "今" & i & "だよ。"
    
    Next

End Sub

”i”が10になったら、”Exit For”で抜けていることがわかりますね(^o^)

For Nextでデータの検索をする場合なんかに、見つかったあとはもう処理しなくて良ければ、このように”Exit For”でで抜けてしまえば、時間の短縮にもなります。

スポンサーリンク

Endステートメント

構文

End

終わらせたいところで”End”って書くだけです。

なんか怖い響きですよねw

”End”は実行中にプロシージャを終了させるだけじゃなく、実行中のプログラム全体を終了します。

Exitステートメントでやったサンプルコードを、”End”に修正して試してみましょう。

Sub sample()

    Call 呼び出されるプロシージャ
    Debug.Print "終了"    

End Sub

Sub 呼び出されるプロシージャ()

    End 'Exit SubをEndに修正
    Debug.Print "ここまで来たよ"

End Sub

“sample”プロシージャを実行します。

”End”でプログラム全体の実行が終了しているので、”sample”にも戻って無いことが分かりますね。

ちなみに。”End”で終了すると、”Static”で宣言した静的変数の値もクリアされますのでご注意ください

以上、プログラムを強制終了する方法でした(^o^)

コメント

タイトルとURLをコピーしました