
お世話様です。
Access2003 VBA にて、各プロシージャに貼ったエラートラップで、
メッセージを出力した後にAccessを終了したいと考えております。
ここで、通常終了時(フォームの×ボタン押下時)の
終了確認メッセージをForm_Unloadイベントで記述しているのですが、
エラートラップでの終了時にも、このメッセージが表示されてしまいます。
エラートラップでの終了時は、終了確認メッセージを表示させたくないので、
標準モジュールにパブリック変数のエラーフラグを用意し、
それで判断しようと考えたのですが、
エラートラップ内でエラーフラグに値を設定しても保持されず、
Form_Unloadイベントで終了確認メッセージがどうしても表示されてしまいます。
何か良い方法はありますでしょうか?よろしくお願いいたします。
例:
'***ボタンAクリックイベント*******************
Private Sub btn_A_Click()
On Error GoTo ERR_LINE
<何らかの処理>
Exit Sub
ERR_LINE:
MsgBox "予期せぬエラーが発生しました。終了します。" & Chr(13) & _
"エラー番号: " & Err.Number & Chr(13) & _
"エラー内容: " & Err.Description, vbCritical + vbOKOnly, "例外エラー"
bl_ErrFlg = True 'エラーフラグ設定←保持されない
Application.Quit
End Sub
'***フォームアンロードイベント*******************
Private Sub Form_Unload(Cancel As Integer)
If bl_ErrFlg = False Then
Cancel = MsgBox("終了します。よろしいですか?",vbQuestion + vbYesNo, "終了確認") = vbNo
End If
End Sub

No.1ベストアンサー
- 回答日時:
Application.Quit で bln_ErrFlg が破棄されたんでしょう。
ERR_LINE の中では Application.Quit じゃなくて、そのフォームを閉じる記述をし、
Unload イベントの中ではフラグが立っていなければメッセージ表示をし、フラグが立っていれば Application.Quit する、
てのはどうでしょうか?
Private Sub btn_A_Click()
On Error GoTo ERR_LINE
' 処理
Exit Sub
ERR_LINE:
MsgBox "予期せぬエラーが発生しました。終了します。" & vbCrLf & _
"エラー番号: " & Err.Number & vbCrLf & _
"エラー内容: " & Err.Description, vbCritical + vbOKOnly, "例外エラー"
bln_ErrFlg = True
DoCmd.Close acForm, Me.Name
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Not (bln_ErrFlg) Then
Cancel = MsgBox("終了しますがよろしいですか?", vbQuestion + vbYesNo, "終了確認") = vbNo
Else
Application.Quit
End If
End Sub
ご教授のとおりで、実現できました。
Form_LoadやForm_Openなどのフォーム開閉時はやり方を変えて終了させましたが、
概ねこれで大丈夫でした。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) エラー処理 3 2022/04/11 14:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Access】Excelインポート時に...
-
【VBA】ワークブックを開く時に...
-
フランスの生年月日(jj/mm/aaaa)
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
インポート時のエラー「データ...
-
Filter関数を用いた結果、何も...
-
Scilabのstacksizeの増やし方が...
-
VBA エクセル で FIND でのエラ...
-
ExcelVBAのDoEventsによるエラー?
-
シングルクォーテーションを含...
-
数式は残し値をクリアするマク...
-
ACCESSで値を代入できないとは?
-
再質問、VBA シート間の転記で...
-
スクリプト エンジンの例外が発...
-
Excel VBA のFunctionプロシー...
-
try catchは避けるべき?
-
exitとreturnの使い分け
-
レコード登録時に「演算子があ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロOn Error GoTo ErrLabel...
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
String""から型'Double'への変...
-
文字列内で括弧を使うには
-
マクロで"#N/A"のエラー行を削...
-
Excel vbaについての質問
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
【Access】Excelインポート時に...
-
VBでSQL文のUPDATE構文を使った...
-
【VB.NET】 パワポ操作を非表示で
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
実行時エラー'-2147467259(8000...
おすすめ情報