構文
構文は以下の通りです。
' ここに処理を追加する
End Sub
解説
QueryCloseイベントは、フォームが閉じられる直前に発生するイベントであり、通常はユーザーがフォームを閉じる操作を行ったときにトリガーされます。このイベントを利用することで、フォームを閉じる前に特定の処理を行うことができます。
引数 | 内容 |
Cancel | イベントが終了する前に設定できる特殊な変数です。Trueを設定するとフォームの閉じる処理がキャンセルされ、フォームが閉じられません。逆に、Falseを設定すると、フォームの閉じる処理が続行されます。 |
CloseMode |
フォームがどのように閉じられたかを示す整数値です。主な値は以下のとおりです。 |
使い方
具体的な使い方について紹介します。
If CloseMode = vbFormControlMenu Then
' [x] ボタンが押された場合は閉じる動作をキャンセルする
Cancel = 1
MsgBox "閉じるボタンを使用してください。", vbExclamation, "操作エラー"
End If
End Sub
これでフォームを閉じる際に、入力内容を保存するかどうかを確認するメッセージボックスが表示されるようになります。また、[x] ボタンをクリックして閉じようとした場合は、閉じる動作がキャンセルされ、代わりに「閉じるボタンを使用してください。」というエラーメッセージが表示されます。
プログラミング例
以下に、プログラミング例を紹介します。
Dim response As VbMsgBoxResult
' ユーザーに保存するか確認するメッセージボックスを表示
response = MsgBox("変更を保存しますか?", vbQuestion + vbYesNoCancel, "保存の確認")
Select Case response
Case vbYes ' 保存する
' 保存処理を実行
' SaveDataToFile
Case vbNo ' 保存しない
' 何もしない
Case vbCancel ' キャンセル
' フォームの閉じる処理をキャンセル
Cancel = True
End Select
End Sub
この例では、フォームが閉じられる直前に「変更を保存しますか?」というメッセージボックスを表示し、ユーザーがYes、No、またはCancelを選択することができます。Yesを選択した場合は保存処理を実行し、Noを選択した場合は何もしないでフォームを閉じます。Cancelを選択した場合はフォームの閉じる処理をキャンセルしてフォームが閉じないようにします。
まとめ
QueryCloseイベントを利用することで、フォームを閉じる直前に特定の処理を追加することができます。これは、データの保存確認や編集内容の確認など、重要な処理を実行する場合に非常に便利です。是非活用してください。