このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

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

2024年4月13日

「定数式が必要です」

今回はVBAで「定数式が必要です」というエラーメッセージが出た時の原因と、その解消法を紹介します。

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラで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

Posted by やろまい