9

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

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

显然,这是一个示例,因此不是最优雅的放置方式,但它不起作用,因为我似乎无法重新调整数组,因为它最初没有 aubound或 a lbound。当我将其调暗时,myArr(0 to 0)这也失败了。

有任何想法吗?

4

2 回答 2

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
于 2013-01-30T11:46:21.130 回答
1

如果您感兴趣,Olle 的解决方案可以通过更多的制衡来扩展。

在这里查看InsertElementIntoArray函数: http ://www.cpearson.com/excel/VBAArrays.htm

于 2014-04-04T17:54:48.890 回答