Установить свойство класса с помощью Sub - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь создать Sub, который примет значение и Class Property и установит для меня Property.

В моем Class (Class1) у меня есть следующее:

Option Explicit

Private vValue As String, vTest As String
Public Property Let Value(v As String)
    vValue = v
End Property
Public Property Get Value() As String
    Value = vValue
End Property
Public Property Let Test(v As String)
    vTest = v
End Property
Public Property Get Test() As String
    Test = vTest
End Property

Затем я звоню с использованием следующего Sub в Module1

Sub TestSetProperty()
    Dim cl As New Class1

    SetProperty "Test", cl.Value

    Debug.Print "Value:", cl.Value
    Debug.Print "Test:", cl.Test

End Sub

My SetProperty Sub содержит

Sub SetProperty(v As String, ByRef prop)
    prop = v
End Sub

Теперь я ожидаю, что это передаст свойство в SetProperty Sub и установит значение, дающее:

Value:        Test
Test: 

в ближайшем окне, однако вместо этого он возвращает

Value:        
Test:         

Как я могу заставить эту работу работать как положено?

1 Ответ

1 голос
/ 28 апреля 2020

Код, который вы опубликовали, пытается передать метод по ссылке. Это невозможно в VBA. Самое близкое, что вы можете получить - это функция CallByName

https://docs.microsoft.com/en-us/office/vba/Language/Reference/user-interface-help/callbyname-function

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