Вы можете использовать такую функцию:
Public Function IsLoaded(formName As String) As Boolean
Dim frm As Object
For Each frm In VBA.UserForms
If frm.Name = formName Then
IsLoaded = True
Exit Function
End If
Next frm
IsLoaded = False
End Function
Использование:
If IsLoaded("Form_Test") Then
'Do Something
End If
Ваш код должен выглядеть следующим образом:
Public Sub NextPicture1()
PictureChange = Now + TimeValue("00:00:08")
If IsLoaded("Onboarding_Projekt") Then
Application.OnTime PictureChange, "NextPicture1"
End If
End Sub
Public Function IsLoaded(formName As String) As Boolean
Dim frm As Object
For Each frm In VBA.UserForms
If frm.Name = formName Then
IsLoaded = True
Exit Function
End If
Next frm
IsLoaded = False
End Function