当用户单击提交按钮并执行操作时,我需要使用 VBA 关闭 Excel 用户窗体。
如何关闭用户表单本身?
我已经尝试过此操作,但它返回 361 错误。
Unload Me
正如最上面的答案所指定的,我在按钮控件后面的代码中使用了以下内容。
Private Sub btnClose_Click()
Unload Me
End Sub
这样做时,它不会尝试卸载控件,而是卸载按钮控件所在的用户窗体。即使从用户窗体上的控件调用,“Me”关键字也指用户窗体对象。如果您在使用此技术时遇到错误,有几个可能的原因。
您可能在错误的位置输入了代码(例如 独立模块)
您可能使用的是旧版本的 Office。我正在使用 Office 2013。我注意到 VBA 随着时间的推移而变化。
根据我的经验,DoCmd...方法的使用更具体于MS Access中的宏功能,但在Excel VBA中并不常用。
在正常(开箱即用)条件下,上面的代码应该可以正常工作。
如果没有看到完整的代码,就不可能肯定地回答这个问题。当您尝试卸载控件而不是窗体时,通常会发生该错误。
确保括号中没有“我”。
此外,如果您可以发布用户表单的完整代码,那将会有很大帮助。
Unload Me 仅在从用户表单自身调用时才有效。如果要从另一个模块代码(或用户窗体)关闭窗体,则需要使用 Unload 函数 + userformtoclose 名称。
希望对你有帮助
这就是为我解决问题的方法。我有一个从工作表上的列表视图打开的窗体,只有当该窗体从包含超过 10k 行代码的 Excel VBA 项目中的工作表列表视图启动时才会出现此问题。这个问题突然出现,任何编译或调试工具都无法发现问题。微软声称尝试编辑静态变量,但我的项目中没有。但是,我将以下行放入“初始化”形式中,它解决了问题。
Application.EnableCancelKey = xlDisabled
“Logit”的补充,位于 http://www.vbaexpress.com/forum/showthread.php?58131-On-Open-quot-This-action-will-reset-your-project-proceed-anyway-quot
还应该注意的是,如果您在用户表单上将按钮分组在一起,则它可以将其链接到组中的另一个按钮,尽管您打算单击该按钮。