对象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”
与我的代码相同?我没有注意到这一点,它可以工作,谢谢您的帮助:)