配列を定義する際、「定数式が必要です」のエラーが出た
一次元配列、二次元配列の定義を変数で行うと、コンパイルエラー「定数式が必要です」が発生します。
その場合は静的配列ではなく、動的配列で定義し、コード内で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
関連記事
コメント