Динамическое имя пользовательской формы в модуле класса - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть этот код в модуле класса

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"

Любые предложения, которые будут высоко оценены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...