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