В VBA ключевое слово для использования вместо this.
равно Me.
Однако это приводит к ошибке компиляции, если переменная, на которую ссылается класс, является закрытой (я не знаю, почему).Возможный обходной путь - изменить его на public.
'''' Class1
Private PrName As String
Public PbName As String
Property Let LastName(Name As String)
Me.PrName = Name ' throws a compile error
Me.PbName = Name ' OK
End Property
UPDATE: Вы также можете создать дополнительный слой функций / свойств оболочки - set_name
и getName
.Переменная Name
тогда не потребует переименования или изменения области видимости.Также входные параметры исходных свойств остаются без изменений.
Private Name As String
Property Let LastName(Name As String)
Call set_name(Name) ' throws a compile error
End Property
Private Sub set_name(new_name As String)
' wrapper
Name = new_name
End Sub
Property Get getName() As String
' wrapper
getName = Name
End Property
Property Get LastName() As String
Dim Name As String
Name = "Mr. "
LastName = Name & Me.getName
End Property