QueryClose イベント
UserForm が閉じる前に発生します。
構文
Private Sub UserForm_QueryClose(Cancelas Integer, CloseModeas Integer)
QueryClose イベントの構文には、次の指定項目があります。
指定項目 | 説明 |
---|---|
Cancel | 整数。 この引数を 0 以外の値に設定すると、読み込み済みのすべてのユーザー フォームで QueryClose イベントが停止され、UserForm とアプリケーションを閉じられなくなります。 |
CloseMode | QueryClose イベントの原因を示す値または定数です。 |
戻り値
CloseMode 引数は、次の値を返します。
定数 | 値 | 説明 |
---|---|---|
vbFormControlMenu | 0 | ユーザーが、UserForm のコントロールメニューで [閉じる] コマンドを選択しました。 |
vbFormCode | 1 | コードから Unload ステートメントが呼び出されます。 |
vbAppWindows | 2 | 現在の Windows オペレーティング環境セッションが終了しようとしています。 |
vbAppTaskManager | 3 | Windows タスク マネージャーがアプリケーションを閉じようとしています。 |
これらの定数は、オブジェクト ブラウザーの [Visual Basic for Applications] オブジェクト ライブラリに一覧表示されます。 vbFormMDIForm もオブジェクト ブラウザーで指定されますが、まだサポートされていません。
解説
このイベントは通常、アプリケーションが閉じる前に、完了していないタスクがアプリケーションのユーザー フォームに含まれていないかどうかを確認するために使用されます。 たとえば、ユーザーが UserForm 内の新しいデータを保存していない場合、データの保存を求めるプロンプトをアプリケーションで表示できます。
アプリケーションが閉じるときに、QueryClose イベント プロシージャを使用して Cancel プロパティを True に設定することで、閉じるプロセスを停止できます。
例
次のコードでは、UserFormクライアント領域をクリックして閉じるようにユーザーに強制します。 ユーザーがタイトル バーの [閉じる] ボックスを使用しようとすると、Cancel パラメーターが 0 以外の値に設定され、終了できなくなります。 一方、ユーザーがクライアント領域をクリックした場合は、CloseMode の値が 1 となり、Unload Me
が実行されます。
Private Sub UserForm_Activate()
Me.Caption = "You must Click me to kill me!"
End Sub
Private Sub UserForm_Click()
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'Prevent user from closing with the Close box in the title bar.
If CloseMode <> 1 Then Cancel = 1
Me.Caption = "The Close box won't work! Click me!"
End Sub
関連項目
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。