首页 > 解决方案 > 为什么我的表格还在记忆中

问题描述

我有以下代码打开一个表单,然后做一些事情。

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 语句中的代码?

标签: vbaformsexcelexcel-2016

解决方案


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

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

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


推荐阅读