eir*_*ude 7 forms excel vba excel-vba 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
Run Code Online (Sandbox Code Playgroud)
然后我在表单中有以下代码
Private Sub cmdAvbryt_Click()
Unload Me
End Sub
Run Code Online (Sandbox Code Playgroud)
但是,即使在表单中单击了cmdAvbryt按钮,第一个代码片段也会输入if语句,就好像表单没有被卸载一样.为什么会这样,如果按下cmdAvbryt按钮,如何防止if语句中的代码被执行?
实际上,frm声明为在用户窗体卸载后ufNyA3不会变成。Nothing尝试使用以下IsUserFormLoaded()函数来检查用户表单是否已加载:
Sub lag_ny_a3()
Dim frm As ufNyA3
Set frm = New ufNyA3
frm.Show
If IsUserFormLoaded("ufNyA3") Then
MsgBox ("Doing stuff")
Unload frm
Else
MsgBox ("Unloaded")
End If
End Sub
Function IsUserFormLoaded(UserFormName As String) As Boolean
Dim frm
For Each frm In UserForms
IsUserFormLoaded = LCase(frm.Name) = LCase(UserFormName)
If IsUserFormLoaded Then Exit For
Next
End Function
Run Code Online (Sandbox Code Playgroud)