在VBA中dynamic追加数组

我想根据各种variables的条件附加一个数字。 这里是我提出的代码:我从一个空数组开始。

Sub makeArr() Dim myArr() As Integer If box1 = True Then ReDim Preserve myArr(LBound(myArr) To UBound(myArr) + 1) myArr(UBound(myArr)) = 1 End If If box2 = True Then ReDim Preserve myArr(LBound(myArr) To UBound(myArr) + 1) myArr(UBound(myArr)) = 2 End If End Sub 

显然,这是一个例子,所以不是最优雅的方式,但它不工作,因为我似乎无法reDim数组,因为它最初没有一个ubound或一个lbound 。 当我把它变暗为myArr(0 to 0)这也失败了。

有任何想法吗?

第一次使用myArr数组之前,请运行以下命令:

 ReDim Preserve myArr(0 To 1) 

那么,当你到达dynamic的ReDim语句时,只有在某些条件满足时才使用ReDim ,例如If UBound(myArr) > 1 then等。

 If box1 = True Then If UBound(myArr) > 1 Then ReDim Preserve myArr(LBound(myArr) To UBound(myArr) + 1) End If myArr(UBound(myArr)) = 1 End If 

如果你感兴趣的话,Olle的解决scheme可以进行更多的检查和平衡。

请参阅此处的InsertElementIntoArray函数: http : InsertElementIntoArray