|
▼kayu さん:
こんにちは。
>すみません、宜しくお願いします。
>
>メインのマクロから、フォームマクロを呼び出して、フォームマクロでエラーが
>発生した時にメインのマクロのラベルに飛びたいのですが…
>
>メインとファームを行ったり来たりするので、その都度、if文で判断するのは
>避けたいのですが、宜しくお願いします。
メインというプロシジャーはどこにあるのですか?
標準モジュールですか?
こういう状況説明をきちんとしてください。
基本的には、フォームモジュールから、別のモジュールに
エラートラップをいきなり飛ばすのは無理です。
(モジュールどころか別プロシジャーでも無理です)
いや、仮にできてもやるべきではありません。
非常にわかりづらい(アセンブラのような)コードになってしまいます。
例えばUserform1にCommandbutton1というコマンドボタンが一つ配置された
ユーザーフォームを考えます。
ここでは、このコマンドボタンをクリックすると自動的にエラーになる
例ですが・・・。
標準モジュールに
'=================================================================
Sub main()
With UserForm1
.Show
End With
End Sub
'===================================================================
Sub err_disp(err_num As Long)
'ここでエラー処理を一括で担う処理を記述する
MsgBox Error(err_num)
End Sub
Userform1のモジュールに
'===================================================================
Private Sub CommandButton1_Click()
On Error GoTo err_label
ans = 1 / 0
Exit Sub
err_label:
Call err_disp(Err.Number)
Resume Next
End Sub
というように標準モジュールに
エラー処理プロシジャーを作成するという方法は考えられますが、
状況にもよりますが、フォームモジュールのエラーはフォームモジュール内に
記述するのが一般的かと思います。
|
|