Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10098 / 13645 ツリー ←次へ | 前へ→

【23664】フォームアンロードのエラートラップ よし 05/4/1(金) 16:11 発言[未読]
【23667】Re:フォームアンロードのエラートラップ G-Luck 05/4/1(金) 16:36 発言[未読]
【23670】Re:フォームアンロードのエラートラップ よし 05/4/1(金) 16:58 お礼[未読]
【23673】Re:フォームアンロードのエラートラップ IROC 05/4/1(金) 17:07 回答[未読]
【23676】Re:フォームアンロードのエラートラップ よし 05/4/1(金) 17:11 お礼[未読]
【23683】Re:フォームアンロードのエラートラップ ichinose 05/4/1(金) 18:31 発言[未読]
【23684】Re:フォームアンロードのエラートラップ よし 05/4/1(金) 20:12 お礼[未読]
【23705】Re:フォームアンロードのエラートラップ ichinose 05/4/2(土) 9:13 発言[未読]

【23664】フォームアンロードのエラートラップ
発言  よし  - 05/4/1(金) 16:11 -

引用なし
パスワード
   はじめまして、よしといいます。

フォームをアンロードする標準モジュールを作成してます。
アンロードする際に発生したエラーをトラップするコードを入れてますが

Public sub Test()

Form1.show

On Error GoTo errsub

Unload Form1

exit sub

errsub:
MsgBox "Error!"

end sub

フォームのUnloadイベントにてVBランタイムエラーが
発生した場合、エラートラップしてerrsubに処理が飛ぶのを
期待してますが、実際はUnloadイベント内で、エラーメッセージ
ボックスを表示されてしまいます。

標準モジュールサブルーチン内にてフォームアンロード時に
発生するVBランタイムエラーをトラップさせる方法をご存知でしたら
教えて頂けないでしょうか。お願いします。

【23667】Re:フォームアンロードのエラートラップ
発言  G-Luck  - 05/4/1(金) 16:36 -

引用なし
パスワード
   ▼よし さん:
ユーザーフォーム内でエラーをトラップして、
標準モジュール無いのプロシージャを呼び出すというのではだめなのでしょうか?

【23670】Re:フォームアンロードのエラートラップ
お礼  よし  - 05/4/1(金) 16:58 -

引用なし
パスワード
   ▼G-Luck さん:
>▼よし さん:
>ユーザーフォーム内でエラーをトラップして、
>標準モジュール無いのプロシージャを呼び出すというのではだめなのでしょうか?

G-Luckさん
回答有難うございます。

ユーザフォームからは、標準モジュールはブラックボックスと
してみなす扱いで使用する環境ですので、出来れば、フォームからは
標準モジュールを意識させない形態でエラートラップしたいです。

【23673】Re:フォームアンロードのエラートラップ
回答  IROC  - 05/4/1(金) 17:07 -

引用なし
パスワード
   Unloadイベント内のエラーを無視してもダメでしょうか?

【23676】Re:フォームアンロードのエラートラップ
お礼  よし  - 05/4/1(金) 17:11 -

引用なし
パスワード
   ▼IROC さん:
>Unloadイベント内のエラーを無視してもダメでしょうか?
IROCさん
回答有難うございます。


標準モジュールから、Unloadイベント内のエラーを無視する制御
が出来れば助かるのですが。

【23683】Re:フォームアンロードのエラートラップ
発言  ichinose  - 05/4/1(金) 18:31 -

引用なし
パスワード
   ▼よし さん:
こんばんは。
VBAでなく、VBの話ですか?

VBAで作ったって、同じですけど・・・。

まず、標準モジュールのコードについては、
Public sub Test()

Form1.show

On Error GoTo errsub

Unload Form1

exit sub

errsub:
MsgBox "Error!"

end sub

これをそのまま生かすとして、
問題は、Formモジュール内のコードですね!!

Unloadは、上記の「Test」プロシジャーで必ず、実行させるように
Formモジュール内で作成するしかないですよね!!
QueryUnload(vbaのQueryclose)で処理してみたらどうでしょうか?
例えば、ユーザーがボタンを押した時は、
Unloadmodeをチェックして、

Me.Hide
Cancel=True

とすれば、Testに制御が戻ります。
よって、Test内で Unload Form1が実行される。

この場合、Unloadステートメントが実行された時は、

Unloadmodeをチェックして

Cancel=Falseにしなければなりませんが。

こんな方法ではいけませんか?

【23684】Re:フォームアンロードのエラートラップ
お礼  よし  - 05/4/1(金) 20:12 -

引用なし
パスワード
   ichinoseさん
回答有難うございます。


アプリケーションはVBにて作成してます。

フォームと標準モジュールの作成者が異なり
私の方が、標準モジュールを作成して、フォームは
不特定多数の方が作成される環境です。

更に、フォーム側と標準モジュール側とでコードのルールを決める
事をしない前提です。(ちょっと特殊ですが。。)ので、互いの前提ルール無しで
標準モジュール側からのコードで、フォームのアンロード(実はロードもですが)イベント内のエラートラップを実現したいです。
(アンロードやロード以外のフォーム内のランタイムエラーは標準モジュールからトラップできるのですが。。。不可能ですかね)

【23705】Re:フォームアンロードのエラートラップ
発言  ichinose  - 05/4/2(土) 9:13 -

引用なし
パスワード
   ▼よし さん:
おはようございます。

>フォームと標準モジュールの作成者が異なり
>私の方が、標準モジュールを作成して、フォームは
>不特定多数の方が作成される環境です。
なるほど、ちょっとだけ調べましたが、
わかりませんでした(実は、再現する環境もないのですが・・)。

ここで知ってらっしゃる方を待つのも一考ですが、
VBなら、VBのBBSでご質問されたほうが良いのではないですか?

10098 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free