vba - 为什么我的表格还在内存中

标签 vba forms excel excel-2016

我有以下代码打开一个表单,然后执行一些操作。

Sub lag_ny_a3()
    Dim frm As ufNyA3

    Set frm = New ufNyA3
    frm.Show

    If Not frm Is Nothing Then
        MsgBox("Doing stuff")
        Unload frm
    End If
End Sub

然后我的表单中有以下代码

Private Sub cmdAvbryt_Click()
    Unload Me
End Sub

但是,即使在表单中单击 cmdAvbryt 按钮,第一个代码片段也会进入 if 语句,就好像表单未卸载一样。为什么会这样?如果按下 cmdAvbryt 按钮,如何防止执行 if 语句中的代码?

最佳答案

即使您的 frm 变量不是 Nothing,表单也会被卸载。在 frm.Show 之前和之后添加一些检查:

Debug.Print VBA.UserForms.Count
frm.Show
Debug.Print VBA.UserForms.Count

您会看到它不在加载的表单列表中。如果将对象变量设置为Nothing,它将不会执行“Doing stuff”

关于vba - 为什么我的表格还在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50561004/

相关文章:

excel - 使用 Office-JS 获取当前区域

arrays - 将二维数组发布到 Excel 工作表

excel - 读取特定字符串的文本文件,如果未找到则打开 msgbox

android - ionic 2 : Disable "Ok" button on keyboard in a form

ruby-on-rails - Rails - 在表单中显示外键引用

Excel是否可以通过A2中的公式更改或​​设置A1的值

sql - SQL Server 2005 DBA学习资源

vba - Excel VBA 循环遍历可见的过滤行

javascript - 无法阻止模式内的表单提交

excel - 如何将行格式化为按第 1 列中的相似值进行颜色分组