プロが教えるわが家の防犯対策術!

on error goto での処理ルーチン内で、
さらに on error goto を出すことは可能でしょうか。

それとも、一度on errorを設定すると、エラーが発生した後では変更は不可なのでしょうか。

やりたいことは、
1回目と、2回目、3回目以降でやることとを変えたいのです。
例えば、メッセージを変えるとか。

この場合、
エラー処理の中で、何回目かを聞くことで、メッセージを変えることは出来ると思うのですが、
それはやらず、
他にも色々やることが多いので、別処理として飛びたいのです。
以下のようなイメージです。


err1:

on error goto err2
resume next
err2:

on error goto err3
resume next
err3:

resume next



宜しくお願いします。

A 回答 (2件)

ご質問の直接の回答としては、on error gotoでエラー処理ブロックに一度入ったら、そこからresumeしない限り2度目は絶対にありません。


そのためエラー処理の中で(resumeする前に)新たなon error gotoを宣言する事も、それ自体が無効なので出来ません。


一体何のエラーをそんなに頻発しているのか(そこからどういう具合にリカバリしたいのか)は別に質問したくないご様子なので、具体的な対処方法についても回答はしませんが(多分他の対処もありますが)、素直にエラー処理部に入る都度エラー回数カウンターを1回ずつカウントアップして、いま何回目やってきたのか見ながら「共通の1か所のエラー処理ルーチンの中」で処置を分岐したほうが、とりあえず今アナタがヤリタイと思ってる事よりは遥かに簡単に「実現可能」です。
    • good
    • 0
この回答へのお礼

早速有り難うございました。

>ご質問の直接の回答としては、on error gotoでエラー処理ブロックに一度入ったら、
>そこからresumeしない限り2度目は絶対にありません。
>そのためエラー処理の中で(resumeする前に)新たなon error gotoを宣言する事も、
>それ自体が無効なので出来ません。


が聞きたかったのです。
特に現在何をやるためということはなく、ケーススタディをしています。
お世話になりました。

お礼日時:2014/02/15 14:26

Sub ine()


Dim errCount As Integer
Dim i As Integer
On Error GoTo errH

For i = 1 To 3
Err.Raise 11 '除算エラー
Next

Exit Sub

errH:
errCount = errCount + 1
Err.Clear
MsgBox errCount
Resume Next
End Sub

とか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!