メインコンテンツへスキップ
VBAで配列の長さを指定するのに変数を使う方法

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

·1 分
Programming VBA
かずさプログラマー
著者
かずさプログラマー
業務の作業自動化を行っています。Go、VBA、Pythonを主に使用しています。過去にはC#、VB.Net、JavaScriptも使用していました。

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

関連記事

VBAで配列から重複している要素を削除する
·2 分
Programming VBA
【VBA】重複データが存在するか確認する
·5 分
Programming VBA
【VBA】n日後の営業日を求める
·2 分
Programming VBA