VBA エラー発生時のExit Sub
VBAでは、エラーが発生したときにSubを終了するようにコードをプログラムすることができます。そのためには、On Error GoToと Exit Subを使用します。
On Error GoToは、 エラーが発生したときに、コードの特定のセクションに「移動」するようにVBAに指示します。
On Error GoTo ErrorHandler
そのセクションから、VBAにExit Subを指示して、サブプロシージャを終了させることができます。
ErrorHandler:
End Sub
このコードを実際に見てみましょう。
VBAでエラー発生時にサブプロシージャを終了させる
この例では、ゼロで割ることでエラーを発生させることにします。
i = 5 / 0
以下のコード全体を見てください。 VBAがエラーを読み取ると、コードのErrorHandlerセクションに “goto “して終了します。
Sub TestError ()
Dim i As Integer
On Error GoTo ErrorHandler
i = 5 / 0
'iを使う処理
MsgBox i
Exit Sub
ErrorHandler:
MsgBox "エラーが発生したのでSubを終了します"
Exit Sub
End Sub
エラー処理を指定するには、まず、On Error GoToステートメントを宣言する必要があります。これは、Subの最初に宣言する必要があります。
On Error GoTo ErrorHandler
その後、エラー処理コードを宣言する必要があります。これは通常、コードの最後にあります。
ErrorHandler:
MsgBox "エラーが発生したのでSubを終了します"
Exit Sub
ErrorHandlerの上にExit Subを追加しているのは、エラーが発生したときだけErrorHandlerのコードを実行したいからです。
Exit Sub
ErrorHandler:
MsgBox "エラーが発生したのでSubを終了します"
Exit Sub
End Sub
このSubを実行すると、ゼロによる除算のためエラーになります。このとき、エラー処理コードが実行されます。メッセージボックスが表示され、Subは終了します。
VBAでコード実行を終了させる方法を知りたい方は、こちらのリンクをクリックしてください: VBAの終了
SubやFunctionを終了する方法を知りたい場合は、このリンクをクリックしてください: VBA サブまたは関数を終了する