如果我犯了一些业余错误,请道歉,但我是VBA的新手。
我试图将一个在类中声明的数组填充为属性,但是出了点问题。经过多次搜索,我有两个问题,我似乎无法在其他地方找到:
1 - 是否有更简单的方法可以将数据保存到类似于数组的结构中,我可以将其传递给子函数?类似于数组的结构需要可调整大小,因为在循环的每次迭代检查这些条件之前,我不知道将添加多少组件。
2 - 如何正确地完成将我的类中的数组属性正确传递给另一个函数?让我感到沮丧的是,我想知道如果只是为了理解我做错了什么,或者也许是对VBA的工作方式有什么误解,我该怎么做。
代码结构如下:
我在Segments
类中声明了CTask
属性,如下所示:
Private pSegments() As CSegment
Public Property Get Segments() As CSegment()
Segments = pSegments()
End Property
Public Property Get segment(index As Integer) As CSegment
segment = pSegments(index)
End Property
Public Property Let Segments(Value() As CSegment)
pSegments() = Value()
End Property
我将CTask
从Sub
传递到populateTasks
,使用此代码将其定义为Dim tasks() As CTask
ReDim tasks(1 To 10)
Call populateTasks(tasks)
:
populateTasks
当我这样做时,Function populateTasks(ByRef tasks() As CTask)
代码使用以下代码接收它:
populateTasks
然后我尝试从名为populateSegments
的{{1}}调用另一个函数,如下所示:
Call populateSegments(tasks(icount).Segments)
我在populateSegments
内收到了像这样的段数组:
Function populateSegments(ByRef Segments() As CSegment)
最后两个代码段是问题所在的位置。细分数组正确填充内部 populateSegments
函数,但当我检查数组以查看它是否为populateSegments
的调用之下是空的时,则不会tasks(icount).segments
数组中的任何内容。在此先感谢您的帮助,如果需要更多信息,请告诉我。
答案 0 :(得分:1)
你不能使populatesegments成为cTask的方法吗?这避免了问题,是一个更好的设计