Excel 从UserForm_QueryClose调用按钮单击代码未按预期工作
我有一个工作簿,它缩小了Excel 从UserForm_QueryClose调用按钮单击代码未按预期工作,excel,vba,Excel,Vba,我有一个工作簿,它缩小了workbook\u Open上的Excel窗口大小,并在其上启动了一个用户表单,从而产生了一种错觉,即它是一个应用程序(而不是电子表格),而没有完全隐藏应用程序的风险。当用户窗体关闭时,我们必须将应用程序窗口设置返回到合理的大小 当用户单击“取消”时,这在当前代码中起作用,这将最大化窗口并保存更改,但当从UserForm\u QueryClose调用相同的代码时,似乎不会触发Application.WindowState=xlMaximize 以下是为UserForm\
workbook\u Open
上的Excel窗口大小,并在其上启动了一个用户表单,从而产生了一种错觉,即它是一个应用程序(而不是电子表格),而没有完全隐藏应用程序的风险。当用户窗体关闭时,我们必须将应用程序窗口设置返回到合理的大小
当用户单击“取消”时,这在当前代码中起作用,这将最大化窗口并保存更改,但当从UserForm\u QueryClose
调用相同的代码时,似乎不会触发Application.WindowState=xlMaximize
以下是为UserForm\u QueryClose
和cmdCancel\u Click
编写的相关代码:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
Call cmdCancel_Click
End If
End Sub
Private Sub cmdCancel_Click()
Call Unload(Me)
Application.WindowState = xlMaximized
Application.DisplayAlerts = False
ThisWorkbook.Close True
Application.DisplayAlerts = True
End Sub
我知道(已经尝试并成功)将Call cmdCancel\u Click
替换为Call MsgBox(“Click'Cancel'”,vbOKOnly)
将强制执行正确的行为(因为它强制用户通过“取消”按钮),但这更混乱,需要用户执行额外的步骤。出于类似的原因,我不想只关闭X按钮(我也成功地做到了这一点),因为用户不会意外地关闭该功能
你知道为什么单击“取消”时,
Application.WindowState
方法能正常工作(如预期的那样),但在从QueryClose调用时却不能?这能按预期工作吗,或者我在VBA处理此类调用时遇到了一些不可避免的不一致吗?您不需要Cancel=True
行。它阻止执行If-Then
块。按照您的建议尝试。行为持续存在。试图将应用程序.WindowState
直接放入用户表单_QueryClose
中,无论Cancel=True
与否,此操作都将失败。听到此消息,我很抱歉。我能够使用您的代码复制该问题,并按照所述进行修复。我不知道会有什么不同。祝你好运