エラーが発生した際に処理分岐し、かつ処理の再開地点をケースごとに設定する方法 エラーが発生した場合に、その後の処理を行うかどうかユーザが選択し、かつ選択した処理を行う On Error GoTo 行ラベル ・ステートメント ・Resumeステートメント:エラーが起こった地点に戻って処理を再開 メッセージボックスに入力した値が数値でなくてエラーがでた場合に
今回の記述に関する前情報
何を行うか
利用時の書式
行ラベル:
~処理~
Resume記述例における利用パーツ
→On Error Goto / Select Case
→Resume / Resume Next / Resume 行ラベル
Resumeステートメントについてbr>
・Resume Nextステートメント:エラーが起こった地点の次の行に戻って処理を再開
・Resume 行ラベル:行ラベルの地点に移動して処理を再開
【実践】エラー発生時に処理の再開地点をケースごとに分ける記述例
処理を終えるか、再度入力するか、そのまま継続するかを選択させたうえで設定しておいたそれぞれの処理再開地点に移動する
▼記述例▼
Sub err()
Dim MyVal As Long
On Error GoTo ErrLabel
MyVal = InputBox("数値を入力") '【Resume】移動地点1
MsgBox MyVal & "が入力された" '【Resume Next】移動地点2
ErrResume: '【Resume 行ラベル】移動地点3
Exit Sub
ErrLabel:
Select Case MsgBox("インプットボックスに再度文字を入力しますか", vbYesNoCancel)
Case vbYes
Resume '移動地点1へ
Case vbNo
Resume Next '移動地点2へ
Case vbCancel
Resume ErrResume '移動地点3へ
End Select
End Sub
▼インプットボックスの表示▼
InputBoxに入力された文字を格納する変数のデータ型はLongとしたが、敢えて文字列を入力することでエラーをおこす
▼メッセージボックスの表示▼
はいを押下→再度InputBoxを表示
いいえを押下→そのままエラーが発生(エラーを無視するステートメントを記述していないため
キャンセルを押下→処理を抜ける