• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:On Error GoTo でエラーが発生する)

エラーハンドリングに関する質問

このQ&Aのポイント
  • エラーハンドリングについての質問です。マクロ内で「On Error GoTo」を使用してエラーをハンドリングしていますが、エラーがうまく解除されずに発生してしまいます。具体的には、マクロ内で「On Error GoTo 0」を使用してエラーハンドリングを解除しているのに、うまく解除されずにエラーが発生することがあります。また、複数のマクロで「On Error GoTo」を使用することはできるのでしょうか。
  • マクロ内でのエラーハンドリングについての質問です。現在、マクロ内で「On Error GoTo」を使用してエラーをハンドリングしていますが、エラーがうまく解除されずに発生してしまいます。具体的には、「On Error GoTo 0」を使用してエラーハンドリングを解除しているのに、うまく解除されずにエラーが発生することがあります。この問題を解決する方法を教えてください。
  • エラーハンドリングについての質問です。現在、マクロ内で「On Error GoTo」を使用してエラーをハンドリングしていますが、うまく解除されずにエラーが発生してしまいます。具体的には、「On Error GoTo 0」を使用してエラーハンドリングを解除しているのに、うまく解除されずにエラーが発生することがあります。この問題に対処する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

エラー処理の中でOn Error GoToを記述することはできません。 エラー処理の基本的な構造は、 Sub Macro1() On Error GoTo ErrorTrap1     '-エラーの発生するコード 1 On Error GoTo 0 Exit Sub ErrorTrap1:   'エラー処理   Resume Next End Sub エラー処理が2つある場合は、 Sub Macro1() On Error GoTo ErrorTrap1     '-エラーの発生するコード 1 On Error GoTo 0 Do   On Error GoTo ErrorTrap2     '-エラーの発生するコード 2   On Error GoTo 0 Loop Exit Sub ErrorTrap1:   'エラー処理1   Resume Next ErrorTrap2:   'エラー処理2   Resume Next End Sub Resume Next でエラーが発生した行の次の行から再開します。 Resumeには他の構文もありますので、調べてみてください。

toroico
質問者

お礼

Resumeの説明までいただき、ありがとうございました。

その他の回答 (1)

回答No.1

>「On Error GoTo」は、Subでは、ひとつしか使えないのでしょうか。 違います。 On Error Goto で飛んだあとの、エラー処理ルーチンでは、ResumeするかExit Subするまでの間、On Error文は一切無視されます。 そして、エラー処理中は、すべてのエラーがシステムによりトラップされ、On Error Goto 0を行ったのと同様に、システムによるエラー表示が行われます。 なお、エラートラップは「関数ごと」に処理される為、エラートラップ中に関数を呼ぶと、呼ばれた関数の中にあるOn Error文は正常に機能します。 従って、質問者さんが書いたプログラムは、 Sub Macro1() On Error GoTo ErrorTrap1     '-エラーの発生するコード 1 ErrorTrap1:    Do       '-エラーの発生するコード 2 ←ここのエラーはシステムが通常のエラー表示を行う。    Loop ErrorTrap2: End Sub と同等です。2つに分けた場合も Sub Macro1() On Error GoTo ErrorTrap1     '-エラーの発生するコード 1 ErrorTrap1: Call Macro2 End Sub Sub Macro2()     Do      On Error GoTo ErrorTrap2  ←このOn Error Gotoは、Macro1とは無関係なので、正常に機能する       '-エラーの発生するコード 2     On Error GoTo 0     Loop   ErrorTrap2: End Sub と同等です。

toroico
質問者

お礼

勉強になりました。 ありがとうございます。

関連するQ&A