そういうサイトには、例として、On Error GoTo でエラーハンドラーに飛ばして、「GoTo ResumePoint」という形で制御を戻すと、エラーが2回目だとそこで止まっちゃうとか書いてあって、やってみると確かに止まります。
でも、VBAのリファレンスを読むと「プロシージャ内でエラーがエラー ハンドラーにより処理された後、 Resume ステートメントで指定されたポイントから、現在のプロシージャで実行が再開されます。」って書いてあるので、「Resume ResumePoint」と書いてみると、何回でも On Error GoTo でエラーハンドラーへちゃんとジャンプします。
サンプルコード
Sub ErrorCatch() On Error GoTo AbEnd Dim i As Integer ResumePoint: Err.Raise 800, "Test", "Error Test" ''強制的にエラーを発生させる Exit Sub AbEnd: If Err.Number = 800 Then If i < 10 Then i = i + 1 Resume ResumePoint ''Resumeで処理を戻す End If End If MsgBox "エラー回数:" & i & "回" & vbNewLine & _ "エラー番号:" & Err.Number & vbNewLine & _ "エラー内容:" & Err.Description End Sub
0 件のコメント:
コメントを投稿