エラーが発生したとき戻って処理を実行
以下のコードは、エラーが発生したときに特定のエラーハンドラーにジャンプし、エラーメッセージを表示してから、エラーが発生した箇所から処理を再開する方法を示しています。
' エラーが発生したとき戻って処理を実行
Private Sub OnErrorGoTo_Resume()
Dim num As Long
'エラー処理を開始する
On Error GoTo ErrHdl
'インプットボックスを表示し、入力された値を変数に代入する
num = InputBox("数値を入力")
'入力された値をメッセージボックスに表示する
MsgBox "入力された値:" & num
Exit Sub
ErrHdl:
MsgBox "数値を入力してください"
'エラーが発生した箇所から処理を再開する
Resume
End Subコードの詳細な説明
- サブルーチンの宣言:
Private Sub OnErrorGoTo_Resume()- このサブルーチンは、エラーが発生したときの処理を定義しています。
- 変数の宣言:
Dim num As Longnumという名前の長整数型の変数を宣言します。
- エラー処理を開始する:
On Error GoTo ErrHdlOn Error GoTo ErrHdlステートメントは、エラーが発生した場合にエラーハンドラー (ErrHdl) にジャンプします。
- インプットボックスの表示:
num = InputBox("数値を入力")- インプットボックスを表示し、ユーザーが入力した値を
num変数に代入します。
- インプットボックスを表示し、ユーザーが入力した値を
- メッセージボックスの表示:
MsgBox "入力された値:" & num- 入力された値をメッセージボックスに表示します。
- サブルーチンの終了:
Exit Sub- 正常に処理が完了した場合、この行でサブルーチンを終了します。
- エラーハンドラーの開始:
ErrHdl:- ここからエラーハンドラーの処理が開始されます。エラーが発生した場合、このラベルにジャンプします。
- エラーメッセージの表示:
MsgBox "数値を入力してください"- エラーメッセージをメッセージボックスに表示します。これは、数値以外の入力があった場合など、エラーが発生した際に表示されます。
- 処理を再開する:
Resume- エラーが発生した箇所から処理を再開します。このステートメントは、エラーハンドラーが終了した後に、エラーが発生した行から再度処理を試みることを意味します。
エラー処理の詳細
- On Error GoTo [label]:
- エラーが発生したときに指定されたラベルにジャンプし、エラーハンドラーとして処理を続けます。
- Resume:
- エラーハンドラーが完了した後、エラーが発生した行から処理を再開します。この方法により、一時的にエラーを処理してから元の処理を再開できます。
実行の流れ
On Error GoTo ErrHdlにより、エラー処理が有効になります。- ユーザーが
InputBoxに値を入力します。数値以外が入力された場合、エラーが発生します。 - エラーが発生した場合、
ErrHdlラベルにジャンプし、エラーメッセージを表示します。 Resumeにより、エラーが発生した行(InputBoxの行)から再度処理が再開されます。- ユーザーが再度数値を入力し、正しく入力されれば、入力された値がメッセージボックスに表示され、処理が完了します。
このコードは、ユーザーが数値を入力するまで繰り返しプロンプトを表示する例です。ユーザーが有効な入力をするまで処理を再開し続けます。

