エラーが発生したとき戻って処理を実行
以下のコードは、エラーが発生したときに特定のエラーハンドラーにジャンプし、エラーメッセージを表示してから、エラーが発生した箇所から処理を再開する方法を示しています。
' エラーが発生したとき戻って処理を実行
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 Long
num
という名前の長整数型の変数を宣言します。
- エラー処理を開始する:
On Error GoTo ErrHdl
On 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
の行)から再度処理が再開されます。- ユーザーが再度数値を入力し、正しく入力されれば、入力された値がメッセージボックスに表示され、処理が完了します。
このコードは、ユーザーが数値を入力するまで繰り返しプロンプトを表示する例です。ユーザーが有効な入力をするまで処理を再開し続けます。