VBAで配列の長さを指定するのに変数を使う方法

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
Licensed under CC BY-NC-SA 4.0
最終更新 2018年7月21日 01:18
Hugo で構築されています。
テーマ StackJimmy によって設計されています。