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

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

2024年4月13日

「定数式が必要です」

今回は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上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

created by Rinker
技術評論社
¥3,608 (2024/10/29 14:16:48時点 Amazon調べ-詳細)
VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい