Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamically appending an array in VBA

Tags:

arrays

excel

vba

I want to append an array with a number depending on the condition of various variables. Here is the code I've come up with: I begin with an empty array.

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

Obviously this is an example so not the most elegant way of putting it but it doesn't work as I can't seem to reDim the array as it doesn't initially have a ubound or an lbound. When I dim it as myArr(0 to 0) this also fails.

Any ideas?

like image 829
harryg Avatar asked Jan 30 '13 11:01

harryg


1 Answers

Before using the myArr array the first time, run this:

ReDim Preserve myArr(0 To 1)

Then when you come to the dynamic ReDim statement, only use ReDim if certain conditions are met, e.g. If UBound(myArr) > 1 then etc.

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
like image 147
Olle Sjögren Avatar answered Sep 27 '22 20:09

Olle Sjögren