配列操作

一次元配列/二次元配列で「定数式が必要です」が出た場合【ExcelVBA】

配列を定義する際、「定数式が必要です」のエラーが出た

一次元配列、二次元配列の定義を変数で行うと、コンパイルエラー「定数式が必要です」が発生します。
その場合は静的配列ではなく、動的配列で定義し、コード内でRedimをすることで回避可能です。

「定数式が必要です」が発生するコードと対処方法

Public Sub sample()
    Dim sNum As Long: sNum = 1
    
    '■変数を使用して宣言するとエラー発生(1次元配列)
    'Dim arr(sNum) As Variant
    '■変数を使用して宣言するとエラー発生(2次元配列)
    'Dim arr(sNum, 1) As Variant
    
    'コンパイルエラー「定数式が必要です」
    
    '■要素数を固定せず動的配列として定義後、Redimをすることで回避可能です。
    Dim arr() As Variant
    ReDim arr(sNum) '0~1が確保される

End Sub

その他

「定数式が必要です」の意味合いは配列の数は「変数」ではなく、「定数」で表記する必要がある為です。
その為、以下のようにConstを使用した定数ではエラーがでません。

Public Sub sample()
    Const sNum As Long = 1
    
    '配列の要素数を定数で指定したため、コンパイルエラーにはならない。
    Dim arr(sNum) As Variant    '1次元配列
    
    Dim arr(sNum, 1) As Variant '2次元配列

End Sub

関連記事

 

コメント

タイトルとURLをコピーしました