Arrays 对象内类对象的VBA数组返回堆栈空间外错误

Arrays 对象内类对象的VBA数组返回堆栈空间外错误,arrays,vba,class,Arrays,Vba,Class,我试图用下面的代码说明在类Bookstore中使用数组来存储许多book对象的概念。我不希望在这个任务中使用集合,因为以后我真的希望能够访问Booki,并根据数组大小中的I位置执行代码。 对stackoverflow的一些研究表明,我应该使用ReDim语句,但并没有说明具体位置和方式 班级书店: Private pBooks As Variant ' it will hold an array of object book Public Property Get Books() As Varia

我试图用下面的代码说明在类Bookstore中使用数组来存储许多book对象的概念。我不希望在这个任务中使用集合,因为以后我真的希望能够访问Booki,并根据数组大小中的I位置执行代码。 对stackoverflow的一些研究表明,我应该使用ReDim语句,但并没有说明具体位置和方式

班级书店:

Private pBooks As Variant ' it will hold an array of object book
Public Property Get Books() As Variant:  Books = pBooks:  End Property
Public Property Let Books(v As Variant): Books = v:       End Property
教材:

Private pName As String
Public Property Get Name() As String:     Name = pName:   End Property
Public Property Let Name(s As String):   pName = s:       End Property
测试代码:

Sub TestBookstore()

Dim bookArray(1 To 2) As Book, i As Long
For i = 1 To 2
 Set bookArray(i) = New Book
 bookArray(i).Name = "book called " & i
Next i

 Dim BKStore As Bookstore: Set BKStore = New Bookstore
   BKStore.Books = bookArray       ' ERROR HERE: out of stack space

 For i = LBound(BKStore.Books) To UBound(BKStore.Books)
   Debug.Print BKStore.Books(i).Name
 Next

End Sub

您的代码中缺少一个p。您必须引用类的内部变量

Public Property Let Books(v As Variant): pBooks = v:       End Property
在这种情况下,我也更喜欢使用更多的空间。这可能使此类错误更加明显

Public Property Let Books(v As Variant)
    pBooks = v
End Property

谢谢你。至于我,我更喜欢在彼此下面列出类似的东西。现在VBA不允许按我的意愿格式化间距,但在像MQL这样的C中,我实现了良好的清晰性能,错误应该很容易以这种方式显示出来。品味问题。。。