Arrays 对象内类对象的VBA数组返回堆栈空间外错误
我试图用下面的代码说明在类Bookstore中使用数组来存储许多book对象的概念。我不希望在这个任务中使用集合,因为以后我真的希望能够访问Booki,并根据数组大小中的I位置执行代码。 对stackoverflow的一些研究表明,我应该使用ReDim语句,但并没有说明具体位置和方式 班级书店: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
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中,我实现了良好的清晰性能,错误应该很容易以这种方式显示出来。品味问题。。。