VBA - Returning array from Property Get

后端 未结 3 1480
南旧
南旧 2020-12-05 11:22

If arrays are returned by reference, why doesn\'t the following work:

\'Class1 class module
Private v() As Double
Public Property Get Vec() As Double()
    V         


        
3条回答
  •  孤街浪徒
    2020-12-05 11:52

    You don't have a let property. Also, the get property is returning the entire array, rather than just the element in question. Change the return type of Property Get from Double() to just plain Double. Add Property Let. Note that it takes two inputs, but only one is passed to it. The last variable (MyValue, in this case) is assumed to get it's value from whatever is after the = sign. Put a break point somewhere early in Test1() and see how the values are affected in the Locals window. Compare the variables created by the original code versus my code:

    'Class1 class module
    Private v() As Double
    Public Property Get Vec(index As Long) As Double
        Vec = v(index)
    End Property
    Public Property Let Vec(index As Long, MyValue As Double)
        v(index) = MyValue
    End Property
    Private Sub Class_Initialize()
        ReDim v(0 To 3)
    End Sub
    ' end class module
    
    'Begin module
    Sub Test1()
        Dim c As Class1
        Set c = New Class1
        Debug.Print c.Vec(1) ' prints 0 as expected
        c.Vec(1) = 5.6
        Debug.Print c.Vec(1) ' prints 5.6
    End Sub
    'End module  
    

提交回复
热议问题