QueryClose 事件

用户窗体 关闭之前发生。

语法

专用子UserForm_QueryClose (取消为整数CloseMode为整数)

QueryClose 事件语法包含以下部分:

Part 说明
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 支持和反馈,获取有关如何接收支持和提供反馈的指南。