こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

クラスモジュールからのErr.Raiseがうまくゆきません。

クラスモジュール内で
On Error Resume Nextを書き、
エラー処理を行った後、Err.Raiseを実行して、呼び出し元にエラーを返していますが、
呼び出しもとの On Error Goto のとび先に飛びません。
呼び出し元で、Err.Numberを表示すると、値が取れますので、値は渡せているようです。
呼び出し元で何か実行時エラーを発生するとちゃんと On Error gotoのとび先に飛びますので、クラスモジュールで行った Err.Raiseが処理されないだけのようです。
どうすれば、呼び出しもとのとび先に飛ぶようになるでしょうか。お知恵をお貸しください。

投稿日時 - 2004-08-04 06:36:23

QNo.950319

困ってます

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

>On Error Resume Nextを書き、

そりゃ飛びませんね。
Err.Raiseの前に
On Error Goto 0を1行いれましょう。

また、VBのメニューの、ツール→オプション→全般のエラーとラップのところで、「エラー処理対象外のエラーで中断」にすると便利かも。

投稿日時 - 2004-08-04 12:00:06

お礼

ご回答ありがとうございます。

説明不足でしたが、このままではだめでした。
というのも、実際にエラーが発生している状態であるため、 On Error Goto 0 を書くとその時点で実行時エラーが発生し、エラー画面が表示されてしまい、呼出元のエラー処理は実行されません。

以下の方法で解決しました。
Err.Clear '一旦エラーをクリアする。
On Error Goto 0 'Resume Nextを解除する。
Err.Raise '呼出元にエラーを送る。
以上です。
Err.Clearを行うとNumber,Descriptionなどは全てクリアされるので、あらかじめ別の変数に対比しておく必要があります。

投稿日時 - 2004-08-04 19:34:25

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問