「定数式が必要です」のエラー解消法(Constの使い方が原因)

2022年11月16日

「定数式が必要です」

今回は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といった変わらないものを代入するようにしてください。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2022/12/08 14:44:42時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい