VBAで配列の長さを指定するとき、通常は数値を直接入力します。
dim ary(3) as variant
配列の要素数が条件によって変化する場合は変数を使用して、配列の要素数を確保したいときがあります。
Option Explicit
Sub usevarinArylength()
Dim length As Long
Dim ret As Long
length = 3
ret = MsgBox("要素数の変更を行いますか?", vbYesNo + vbQuestion, "要素数の変更")
If ret = vbYes Then
length = 4
End If
Dim ary(length) As Variant 'lengthは条件によって変わる
ary(0) = 0
MsgBox ary(0)
End Sub
しかし、変数を使用してDimで配列を宣言すると「コンパイルエラー:定数式が必要です。」とエラーになります。
変数を使用して配列の要素数を確保するには一旦Dimで要素を確保せず配列を宣言します。 そのあと、Redimを使用して配列の要素数を確保します。
Option Explicit
Sub usevarinArylength2()
Dim length As Long
Dim ret As Long
length = 3
ret = MsgBox("要素数の変更を行いますか?", vbYesNo + vbQuestion, "要素数の変更")
If ret = vbYes Then
length = 4
End If
Dim ary() As Variant 'lengthは条件によって変わる
ReDim ary(length) As Variant
ary(0) = 0
MsgBox ary(0)
End Sub