当Query_Close的取消争论总是等于True时如何closures用户窗体?

当我意外地创build了一个无法closures的用户表单时,我正在编辑用户表单:

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 。 最终的解决scheme是保存工作簿并使用任务pipe理器来结束Excel。 所有的信息都被正确地保存了,但是这是有效的,但是这是一个相当脏的解决scheme,我宁愿避免。

这些问题:

  • 用卸载closures用户窗体不起作用
  • 无法closures用户窗体

处理不当的closures工作簿,导致一些错误,它仍然存在。

Query_Close事件中的Cancel始终等于True时,是否有办法closures用户窗体(已经加载)?

当你打开编辑器时,你仍然可以停止代码,编辑时应该总是这样。 除此之外,你可以从任务栏closuresexcel,右键点击它,如果你已经做了修改,一个保存提示将会显示,你可以取消它,表单将会消失。
但编程明智不是。 这些forms,不应该被创造。

你的表格应该在右上angular有一个红色的X,你可以按下来closures表格。 如果你没有这样的button创build表单,它应该有一个命令button,你可以点击运行一个过程。 该程序应该包含Me.Hide行。 这将closures窗体,但它将保留在内存中,并可以使用Show命令进行调用。 您不应该在窗体自己的代码中使用Unload命令。 这个命令应该放在打开表单的代码中。 顺序是你创build表单,然后显示它,隐藏并最终卸载它。 ShowHide控制之间的窗体。