使用 Unload Me 关闭用户表单不起作用

问题描述 投票:0回答:5

当用户单击提交按钮并执行操作时,我需要使用 VBA 关闭 Excel 用户窗体。

如何关闭用户表单本身?

我已经尝试过此操作,但它返回 361 错误。

Unload Me
vba excel excel-2010
5个回答
24
投票

正如最上面的答案所指定的,我在按钮控件后面的代码中使用了以下内容。

Private Sub btnClose_Click()
    Unload Me
End Sub

这样做时,它不会尝试卸载控件,而是卸载按钮控件所在的用户窗体。即使从用户窗体上的控件调用,“Me”关键字也指用户窗体对象。如果您在使用此技术时遇到错误,有几个可能的原因。

  1. 您可能在错误的位置输入了代码(例如 独立模块)

  2. 您可能使用的是旧版本的 Office。我正在使用 Office 2013。我注意到 VBA 随着时间的推移而变化。

根据我的经验,DoCmd...方法的使用更具体于MS Access中的宏功能,但在Excel VBA中并不常用。

在正常(开箱即用)条件下,上面的代码应该可以正常工作。


11
投票

如果没有看到完整的代码,就不可能肯定地回答这个问题。当您尝试卸载控件而不是窗体时,通常会发生该错误。

确保括号中没有“我”。

此外,如果您可以发布用户表单的完整代码,那将会有很大帮助。


4
投票

Unload Me 仅在从用户表单自身调用时才有效。如果要从另一个模块代码(或用户窗体)关闭窗体,则需要使用 Unload 函数 + userformtoclose 名称。

希望对你有帮助


0
投票

这就是为我解决问题的方法。我有一个从工作表上的列表视图打开的窗体,只有当该窗体从包含超过 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


-1
投票

还应该注意的是,如果您在用户表单上将按钮分组在一起,则它可以将其链接到组中的另一个按钮,尽管您打算单击该按钮。

© www.soinside.com 2019 - 2024. All rights reserved.