VBAで配列の長さを指定するとき、通常は数値を直接入力します。
1 |
dim ary(3) as variant |
配列の要素数が条件によって変化する場合は
変数を使用して、配列の要素数を確保したいときがあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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を使用して配列の要素数を確保します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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 |
コメント