我有以下代码打开一个表单,然后执行一些操作。
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/