はじめに
職場で事務作業用のマクロの改修を依頼されたので、ちょこちょことコードを直していたところ、**「定数式が必要です」**というコンパイルエラーが突然発生しました。
このエラーメッセージは定数の宣言に誤りがある時に出るようなので、最初は私のコードが誤っていると思ってコードを入念に確認しました。
ですが、定数の宣言部分も含めて、どこにもコンパイルエラーになるような箇所が見当たりませんでした。
コードを一通り確認した後は、Excelを再起動したり、OSを再起動したりと色々試してみたものの、いずれも全く効果がありませんでした...
解決のヒント
キーワードを変えてあれこれ調べていたところ、teratailの記事で私と同じような症状の方が質問されているのを発見しました。
元々は動いていたExcelVBAのソースに修正を加えたところ、突然Constで定義した定数値が読み込めずにエラーとなってしまいました。
解決方法
今回コンパイルエラーが起きたのは標準モジュールだったため、以下の手順でVBAのバグ?を回避することができました。
(※上記のteratailの記事に書かれている方法と実質的に同じです。)
- 新しい標準モジュールを作る。
- 新しい標準モジュールに、コンパイルエラーを起こした標準モジュールのコードをコピーする。
- 元の標準モジュールを解放(削除)する。
- 新しい標準モジュールの名前を、元の標準モジュールの名前に置き換える。
まとめ
目の前の問題はクリアできたものの、何が原因でVBAのバグ?に触れてコンパイルエラーになったかが全く分からないので、同じような症状がいつ再発するか分からないのが気がかりです...