在VBA中动态附加数组

时间:2013-01-30 11:23:46

标签: arrays excel vba excel-vba

我想根据各种变量的条件追加一个带数字的数组。这是我提出的代码:我从一个空数组开始。

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

显然这是一个例子,所以不是最优雅的方式,但它不起作用,因为我似乎无法重新调整数组,因为它最初没有ubound或{{ 1}}。当我将其调暗为lbound时,这也会失败。

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

在第一次使用myArr数组之前,请运行:

ReDim Preserve myArr(0 To 1)

然后,当您进入动态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

答案 1 :(得分:1)

如果感兴趣的话,Olle的解决方案可以通过更多的检查和平衡来扩展。

在此处查看InsertElementIntoArray功能: http://www.cpearson.com/excel/VBAArrays.htm