【发布时间】:2018-09-10 07:19:24
【问题描述】:
我试图用下面的代码来说明在 Class Bookstore 中使用数组来存储许多书籍对象的概念。我不希望为此任务使用集合,因为稍后我真的希望能够访问 Book(i),并根据数组大小中的 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
【问题讨论】: