当 Query_Close 的取消参数始终为 True 时如何关闭用户表单?
How to close a userform when Query_Close's cancel arguement always equals True?
我今天在编辑用户表单时不小心创建了一个无法关闭的用户表单:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Logic that always evaluated to:
Cancel = True
End Sub
ShowModal
属性 设置为 True,因此您无法与 Excel 或 VBE 交互,因此似乎不可能终止该表单。无论 CloseMode(例如,Alt-F4)如何,逻辑总是评估为 Cancel = True
。最后的解决办法是保存工作簿,用任务管理器结束Excel。这行得通,因为所有信息都已正确保存,但这是一个我宁愿避免的相当肮脏的解决方案。
这些问题:
- Closing a Userform with Unload Me doesn't work
- Can't close userform
处理不正确关闭工作簿导致某些错误持续存在的问题。
当 Cancel
在 Query_Close
事件中总是等于 True
时,是否有关闭用户表单(已加载)的方法?
当你打开编辑器时,你仍然可以停止代码,编辑时应该如此。除此之外,您可以从任务栏关闭excel,当右击它时,如果您进行了更改,则会显示保存提示,您可以取消它并且表格将消失。
但编程不明智。这种形式,不应该创建。
您的表单右上角应该有一个红色的 X,您可以按它关闭表单。如果您创建的表单没有这样的按钮,它应该有一个命令按钮,您可以单击该按钮以 运行 一个过程。该过程应包含 Me.Hide
行。这将关闭表单,但它会保留在内存中,可以使用 Show
命令调用。
您不应在表单自己的代码中使用 Unload
命令。此命令应放在打开表单的代码中。顺序是您创建表单,然后显示它,隐藏它,最后卸载它。在 Show
和 Hide
之间,控制权交给了表单。
我今天在编辑用户表单时不小心创建了一个无法关闭的用户表单:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Logic that always evaluated to:
Cancel = True
End Sub
ShowModal
属性 设置为 True,因此您无法与 Excel 或 VBE 交互,因此似乎不可能终止该表单。无论 CloseMode(例如,Alt-F4)如何,逻辑总是评估为 Cancel = True
。最后的解决办法是保存工作簿,用任务管理器结束Excel。这行得通,因为所有信息都已正确保存,但这是一个我宁愿避免的相当肮脏的解决方案。
这些问题:
- Closing a Userform with Unload Me doesn't work
- Can't close userform
处理不正确关闭工作簿导致某些错误持续存在的问题。
当 Cancel
在 Query_Close
事件中总是等于 True
时,是否有关闭用户表单(已加载)的方法?
当你打开编辑器时,你仍然可以停止代码,编辑时应该如此。除此之外,您可以从任务栏关闭excel,当右击它时,如果您进行了更改,则会显示保存提示,您可以取消它并且表格将消失。
但编程不明智。这种形式,不应该创建。
您的表单右上角应该有一个红色的 X,您可以按它关闭表单。如果您创建的表单没有这样的按钮,它应该有一个命令按钮,您可以单击该按钮以 运行 一个过程。该过程应包含 Me.Hide
行。这将关闭表单,但它会保留在内存中,可以使用 Show
命令调用。
您不应在表单自己的代码中使用 Unload
命令。此命令应放在打开表单的代码中。顺序是您创建表单,然后显示它,隐藏它,最后卸载它。在 Show
和 Hide
之间,控制权交给了表单。