对象vba中的数组

对象vba中的数组,vba,Vba,我有两门课 第一类 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 类别2 Private pStr1 as Stri

我有两门课

第一类

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
类别2

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
我想做什么

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

我有一个错误,因为class2Arr上的get属性没有参数

您刚刚声明了数组,但没有将它初始化为Class2的私有pClass2Arr(10)。我在
Class1
中添加了
私有子类\u Initialize()
事件:

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
然后你可以这样使用它:

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

感谢您的帮助,我添加了构造函数,但我有相同的错误。您是否将
a.class2Arr(0)。str1=“test”
更改为
a.class2Arr()(0)。str1=“test”
与我的代码相同?我没有注意到这一点,它可以工作,谢谢您的帮助:)