「定数式が必要です」のエラー解消法(Constの使い方が原因)
今回はVBAで「定数式が必要です」というエラーメッセージが出た時の原因と、その解消法を紹介します。
「定数式が必要です」となる原因
「定数式が必要です」のメッセージが出るのは定数(Const)に代入するものに問題があるためです。
よくあるケースとして、定数に変数を代入していないでしょうか?
もし、変数を代入していれば、それがエラーの原因です。
定数(Const)がエラーになる3つのケース
Sub NG()
'①変数を代入
Dim bookPash As String
bookPash = ThisWorkbook.Path
Const filePath As String = bookPash & "\FileName" '変数bookPathを代入している
'②自作関数を代入
Const func = 自作関数
'③オブジェクトを代入
Const rng As Object = Range("A1")
End Sub
上のプログラムをコンパイル(or実行)しようとすると「定数式が必要です」のエラーが発生します。
(①~③のすべてがエラーの原因となります)
定数には、中身が変わってしまうようなものは入れられません。
もし、上のようなプログラムを書いていた場合は、代入するものを変更するか、定数でなく変数を使いましょう。
定数(Const)がエラーにならないケース
Sub OK()
Const INT_ONE As Integer = 1 'Integer型
Const STR As String = "String" 'String型
Const dateToday As Date = "2022/2/2" 'Date型
End Sub
反対にエラーとならないのは、中身が変わらないものです。
定数にはIntegerやString、Dateといった変わらないものを代入するようにしてください。