Ссылка на базовый экземпляр класса - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть Class1 в VBA-Excel с переменной-именем и динамически создаваемая кнопка, которая является экземпляром другого класса (cButton).Я хочу сослаться на экземпляр Class1 в событии click кнопки, но не могу заставить его работать.Минимальный рабочий пример:

Class1

Option Explicit
Dim myButton As cButton
Public ClassName As String

Sub createButton()
    Set myButton = New cButton
    Set myButton.ButtonObject = UserForm1.Controls.Add("Forms.CommandButton.1", "btn", True)
    myButton.ButtonName = "NiceButton"
End Sub

Class cButton

Option Explicit
Public WithEvents ButtonObject As MSForms.CommandButton
Public ButtonName As String

Private Sub ButtonObject_Click()
    MsgBox ("This Button is called " & Me.ButtonName)
    'MsgBox ("This Button belongs to " & Me.Me.ClassName) 'Compile Error: Method or Data Member not found
End Sub

Я создаю экземпляр и нажимаю кнопку в пользовательской форме1:

Option Explicit
Dim myClass As Class1

Private Sub UserForm_Initialize()
    Set myClass = New Class1
    myClass.ClassName = "NiceClass"
    myClass.createButton
End Sub

Когда я нажимаю кнопку, она правильно отображает имя кнопки (через Me.Name в ButtonObject_Click), но мне не удалось сослаться на базовый экземпляр класса, чтобы отобразить имя класса.(Я знаю, Me.Me.ClassName был немного наивным, но я нигде не мог найти решение).Как я могу сослаться на экземпляр класса Class1 (myClass), которому принадлежит кнопка?

Заранее благодарим за помощь.

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