Я думаю, что код для IsFormVisible
просто пропускает одну строку кода, если вам действительно нужно проверить на видимость.
СОВЕТ Вопрос состоит в том, как справедливо указал Рори о том,Пользовательская форма загружена или нет.И на этот вопрос его ответ абсолютно верен.
Public Function IsFormVisibleA(FrmName As String) As Boolean
Dim Frm As Object
On Error GoTo errorH
IsFormVisibleA = False
For Each Frm In VBA.UserForms
If LCase$(Frm.Name) = LCase$(FrmName) Then
If Frm.Visible Then
IsFormVisibleA = True
Exit Function
End If
End If
Next
errorH:
IsFormVisibleA = False
End Function
Вы можете проверить это так.Если вы загружаете только форму, не показывая ее, функция IsFormVisible вернет true, хотя форма не видна.
Sub Testfrm()
Dim Frm As frmMy
Set Frm = New frmMy
' Frm.Show vbModeless
Debug.Print Frm.Name
Debug.Print IsFormVisibleA("frmMy"), IsFormVisible("frmMy")
End Sub