- ベストアンサー
クラスモジュールからのErr.Raiseがうまくゆきません。
クラスモジュール内で On Error Resume Nextを書き、 エラー処理を行った後、Err.Raiseを実行して、呼び出し元にエラーを返していますが、 呼び出しもとの On Error Goto のとび先に飛びません。 呼び出し元で、Err.Numberを表示すると、値が取れますので、値は渡せているようです。 呼び出し元で何か実行時エラーを発生するとちゃんと On Error gotoのとび先に飛びますので、クラスモジュールで行った Err.Raiseが処理されないだけのようです。 どうすれば、呼び出しもとのとび先に飛ぶようになるでしょうか。お知恵をお貸しください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>On Error Resume Nextを書き、 そりゃ飛びませんね。 Err.Raiseの前に On Error Goto 0を1行いれましょう。 また、VBのメニューの、ツール→オプション→全般のエラーとラップのところで、「エラー処理対象外のエラーで中断」にすると便利かも。
お礼
ご回答ありがとうございます。 説明不足でしたが、このままではだめでした。 というのも、実際にエラーが発生している状態であるため、 On Error Goto 0 を書くとその時点で実行時エラーが発生し、エラー画面が表示されてしまい、呼出元のエラー処理は実行されません。 以下の方法で解決しました。 Err.Clear '一旦エラーをクリアする。 On Error Goto 0 'Resume Nextを解除する。 Err.Raise '呼出元にエラーを送る。 以上です。 Err.Clearを行うとNumber,Descriptionなどは全てクリアされるので、あらかじめ別の変数に対比しておく必要があります。