共用方式為


QueryClose 事件

會在 UserForm 關閉之前發生。

語法

Private Sub UserForm_QueryClose (CancelAs IntegerCloseModeAs Integer)

QueryClose 事件語法包含下列部分:

部分 描述
Cancel SyncSchedule 參數會指定 ???。此參數的有效值為: 將此 變數設定為 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 參數會 設定為非零值,以防止終止。 不過,如果使用者已按兩下客戶端區域, 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 支援與意見反應