次の方法で共有


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 のサポートおよびフィードバックを参照してください。