我有以下代码打开表单,然后做一些事情。
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语句中的代码?
答案 0 :(得分:4)
即使您的frm
变量不是Nothing
,表单也会被卸载。在frm.Show
:
Debug.Print VBA.UserForms.Count
frm.Show
Debug.Print VBA.UserForms.Count
并且您将看到它不在已加载表单的列表中。如果将对象变量设置为Nothing
,则不会执行"做东西"
答案 1 :(得分:3)
实际上,在用户表单卸载后,声明为frm
的{{1}}不会变为ufNyA3
。尝试使用以下Nothing
函数来检查是否已加载用户表单:
IsUserFormLoaded()