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

ubound明らかにこれは例であるため、最もエレガントな方法ではありませんが、最初は aまたはを持たないため、配列を reDim できないように見えるため、機能しませんlboundmyArr(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 に答える