HOME > 即効テクニック > AccessVBA > フォーム・レポート > フォームを閉じる操作をキャンセルする

即効テクニック

フォーム・レポート

フォームを閉じる操作をキャンセルする

(Access 2000/2002/2003)
● 概要 ●
Unloadイベントは、フォームを閉じる操作をしたとき、フォームが画面から表示されなくなる前に発生します。
イベントプロシージャは、OnUnload/読み込み解除時プロパティに設定します。
Unloadイベントプロシージャの引数にTureを設定すると、Unloadイベントをキャンセルすることができます。
次のコードは、フォームを閉じる操作が行われたとき、終了の確認のメッセージダイアログを表示し、[いいえ]ボタンがクリックされたときに、Unloadイベントをキャンセルするものです。


● サンプル ●
'フォームを閉じる操作をキャンセルする

'フォームを閉じるときに終了確認する
Private Sub Form_Unload(Cancel As Integer)
    Dim myRes As Integer
  '終了を確認する
    myRes = MsgBox("終了してもよろしいですか", vbYesNo) 
    If myRes = vbNo Then
    'イベントをキャンセルする
        Cancel = True
    End If
End Sub


● 実行結果 ●
フォームの[閉じる]ボタンを押すと、「終了してもよろしいですか」とメッセージボックスに表示され、[はい]ボタンをクリックすると、フォームは閉じます。
[いいえ]ボタンをクリックすると、フォームは開いたままになります。


● ポイント ●
 フォームを閉じると、次の順番にイベントが発生します。
  Unload → Deactivate → Close
Unloadイベントは、フォームを閉じるときに、フォームが画面から表示されなくなる前に発生します。
Deactivateイベントは、フォーカスが他のウィンドウに移動するときに発生します。
Closeイベントは、フォームが閉じられ、画面に表示されなくなるときに発生します。
これらのイベントの中で、イベントをキャンセルすることができるのは、Unloadイベントだけです。