【ExcelVBA・マクロ】コンパイルエラー「定数式が必要です」の原因と解決方法|Case文・Constの注意点

コンパイルエラー「定数式が必要です」の原因と解決方法 ExcelVBA

VBAを実行していると、次のようなエラーが出たことはありませんか?

コンパイルエラー:定数式が必要です

このエラーは初心者だけでなく、中級者でもよく遭遇するエラーの1つです。
特にSelect Case文やConst(定数)を使っているときに発生しやすいのが特徴です。

また、原因が分かりにくいケースとして、コード自体は正しいのにエラーが出ることもあります。
この記事では、原因と解決方法に加えて、コピペで直るケースの対処法も含めて解説します。


スポンサーリンク
スポンサーリンク

この記事でわかること

  • 「定数式が必要です」エラーの意味
  • よくある原因(4パターン)
  • エラーの正しい修正方法
  • コピペで直るケースの対処法

エラーの意味とは?

「定数式が必要です」とは、

「ここには固定値(定数)しか使えません」

という意味です。

つまり、次のような場合にエラーになります。

  • 変数を使ってはいけない場所で使っている
  • 計算式を使っている
  • 関数を使っている

原因①:Select Caseで変数を使っている

❌ エラーになるコード

Dim x As Long
x = 10

Select Case 5
    Case x
        MsgBox "一致"
End Select

✅ 修正方法

Select Case 5
    Case 10
        MsgBox "一致"
End Select

原因②:Constに変数を使っている

❌ エラーになるコード

Dim x As Long
x = 5

Const num As Long = x

✅ 修正方法

Const num As Long = 5

原因③:関数を使っている

❌ エラーになるコード

Const today As Date = Date

✅ 修正方法

Dim today As Date
today = Date

原因④:Case文の範囲に変数を使っている

❌ エラーになるコード

Dim minVal As Long
minVal = 10

Select Case 15
    Case minVal To 20
        MsgBox "範囲内"
End Select

✅ 修正方法

If 15 >= minVal And 15 <= 20 Then
    MsgBox "範囲内"
End If

原因⑤:コード自体は正しいのにエラーが出る(よくある落とし穴)

実は、コードに問題がなくてもこのエラーが出ることがあります。

その原因として多いのが以下です。

  • 全角文字が混ざっている
  • 見えない特殊文字が含まれている
  • HTMLやWebからコピーしたコード

対処法:コードをコピペし直すと直るケース

このエラーで非常に多いのが、コードの文字が壊れているケースです。

特に次のようなコードは要注意です。

  • ブログやWebサイトからコピーしたコード
  • ChatGPTなどからコピーしたコード
  • メールやPDFからコピーしたコード

見た目は同じでも、内部的に違う文字になっていることがあります。


具体的な対処方法

次の手順を試してください。

  1. 該当行をすべて削除する
  2. キーボードで手入力し直す
  3. または、信頼できるコードを再コピーする

特に以下の記号は壊れやすいです。

  • <(小なり)
  • >(大なり)
  • =(イコール)
  • To(範囲指定)

例えば、見た目は同じでも次のように違うことがあります。

  • 半角の< と 全角の<
  • 半角の= と 全角の=

この場合、VBAは別の文字として認識するためエラーになります。


よくある勘違い

  • コードが正しければ必ず動くとは限らない
  • 見た目が同じでも内部文字が違うことがある
  • コピペが原因でエラーになることも多い

エラーを防ぐコツ

  • コードはできるだけ手入力する
  • 記号は半角で入力する
  • エラー箇所は一度削除して書き直す

まとめ

  • 「定数式が必要です」は定数しか使えない場所で発生する
  • Case文・Constでよく起きる
  • 変数や関数は使えない
  • コードが正しくても文字化けでエラーになることがある
  • その場合はコピペし直すと解決することがある

このエラーは「仕様」と「文字問題」の両方が原因になります。
特にコピペ由来のエラーは非常に多いので、一度書き直すという対処法も覚えておくと便利です。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました