VBA将类数组传递给函数

道歉,如果我犯了一些业余的错误,但我是VBA新手。 我试图填充一个在类中声明为一个属性的数组,但出了问题。 经过多次search,我有两个问题,我似乎无法find其他地方:

1 – 有一个更简单的方法来完成将数据保存到一个类似数组的结构,我可以传递给子函数? 类似数组的结构需要resize,因为我不知道在循环的每次迭代检查这些条件之前我将添加多less个组件。
2 – 如何正确地将我的类中的数组属性传递给另一个函数? 我很想知道如何才能明白我做错了什么,或者可能是我对VBA工作方式的误解。

代码结构如下:

我已经在CTask类中声明了Segments属性,如下所示:

 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 

我从一个Sub传递CTask ,在这里它被定义为使用这个代码populateTasks

 Dim tasks() As CTask ReDim tasks(1 To 10) Call populateTasks(tasks) 

当我这样做时, populateTasks代码使用以下代码接收它:

 Function populateTasks(ByRef tasks() As CTask) 

然后我尝试从populateTasks调用另一个函数populateSegments像这样:

 Call populateSegments(tasks(icount).Segments) 

我收到populateSegments里面populateSegments细分数组像这样:

 Function populateSegments(ByRef Segments() As CSegment) 

最后两个代码片段是问题所在。 segments数组在populateSegments函数中正确populateSegments ,但是当我检查数组以查看是否在调用populateSegments是否为空时, tasks(icount).segments数组中没有任何内容。 提前感谢您的帮助,请让我知道是否需要更多的信息。

你不能让populatesegments cTask的方法? 这避免了这个问题,是一个更好的devise