0

I have 2 classes

Class1

Private pClass2Arr(10) as Class2

Public Property Get class2Arr() as Class2()
    class2Arr = pClass2Arr
End Property

Public Property Let class2Arr(mClass2Arr() as Class2)
    pClass2Arr = mClass2Arr
End Property

Class2

Private pStr1 as String
Private pStr2 as String

Public Property Get str1() as String
    str1 = pStr1
End Property

Public Property Let str1(mStr1 as String)
    pStr1 = mStr1
End Property

Public Property Get str2() as String
    str2 = pStr2
End Property

Public Property Let str2(mStr2 as String)
    pStr2 = mStr2
End Property

And Id' like to do

Dim a as Class1
Set a = New Class1
a.class2Arr(0).str1 = "test"
Debug.Print a.class2Arr(0).str1

And I have an error because get property on class2Arr have no arguments

1 Answer 1

1

You just declared array, but not initialized it Private pClass2Arr(10) as Class2. I've added Private Sub Class_Initialize() event in Class1:

Private pClass2Arr(10) As Class2

Public Property Get class2Arr() As Class2()
    class2Arr = pClass2Arr
End Property

Public Property Let class2Arr(mClass2Arr() As Class2)
    pClass2Arr = mClass2Arr
End Property

Private Sub Class_Initialize()
    Dim i As Byte ' change Byte to Integer if your array contains more than 255 elements
    For i = LBound(pClass2Arr) To UBound(pClass2Arr)
        Set pClass2Arr(i) = New Class2
    Next
End Sub

and then you can use it like this:

Sub test()
    Dim a As Class1
    Set a = New Class1
    a.class2Arr()(0).str1 = "test"
    Debug.Print a.class2Arr()(0).str1
End Sub
Sign up to request clarification or add additional context in comments.

3 Comments

Thanks for your help, I add the constructor but I have the same error
have you changed a.class2Arr(0).str1 = "test" to a.class2Arr()(0).str1 = "test" as in my code?
I didn't notice this, it works, thanks for your help :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.