У меня есть этот код в модуле класса
Public WithEvents chk As MSForms.CheckBox
Private Sub chk_Click()
Dim c As Object, sName As String
For Each c In ThisWorkbook.VBProject.VBComponents
If c.Type = 3 Then
If IsLoaded(c.Name) Then
If chk = True Then
UserForm1.lblCount.Caption = CInt(UserForm1.lblCount.Caption) + 1
Else
UserForm1.lblCount.Caption = CInt(UserForm1.lblCount.Caption) - 1
End If
End If
End If
Next
End Sub
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
Это прекрасно работает, когда загружена пользовательская форма 1.Тем не менее, UserForm1 создается во время выполнения с помощью кода в стандартном модуле, и созданная пользовательская форма может быть названа UserForm2 или UserForm3 или UserForm4 и т. Д.
c.Name возвращает правильное имя пользовательской формы, я изо всех сил пытаюсь получить «UserForm1»заменено на "c.Name"
Любые предложения, которые будут высоко оценены.