Mah*_*hdy 1 excel vba userform
我想检查在运行代码时是否加载了用户表单。我尝试了几种方法,没有人工作。我记得我以前这样做过,但我不记得我的解决方法。任何的想法?
我在这里和其他地方找到了一些解决方案,但它们也不起作用!
问题是……
这是我的尝试:
Public Function IsFormVisible(FrmName As String) As Boolean
On Error GoTo errorH
IsFormVisible = False
Set Frm = UserForms(FrmName)
If Not Frm Is Nothing Then IsFormVisible = True
End Function
errorH:
IsFormVisible = False
End Function
Run Code Online (Sandbox Code Playgroud)
Public Function IsFormVisible(FrmName As String) As Boolean
Dim Frm As UserForm
On Error GoTo errorH
IsFormVisible = False
For Each Frm In VBA.UserForms
If Frm.Name = FrmName Then
IsFormVisible = True
Exit Function
End If
Next
errorH:
IsFormVisible = False
End Function
Run Code Online (Sandbox Code Playgroud)
这里有两个简单的选项。首先,您可以声明frm
为Object
:
Public Function IsFormVisible(FrmName As String) As Boolean
Dim Frm As Object
On Error GoTo errorH
IsFormVisible = False
For Each Frm In VBA.UserForms
If LCase$(Frm.Name) = LCase$(FrmName) Then
IsFormVisible = True
Exit Function
End If
Next
errorH:
IsFormVisible = False
End Function
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用TypeName
代替.Name
:
Public Function IsFormVisible(FrmName As String) As Boolean
Dim Frm As UserForm
'On Error GoTo errorH
IsFormVisible = False
For Each Frm In VBA.UserForms
If lcase$(TypeName(Frm)) = lcase$(FrmName) Then
IsFormVisible = True
Exit Function
End If
Next
errorH:
IsFormVisible = False
End Function
Run Code Online (Sandbox Code Playgroud)
我已经使这两个不区分大小写。