在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