ExcelVBAのクラスモジュールで定義された列挙型を使用しています。これは正常に機能していますが、列挙型変数を比較するたびにコンパイルエラーが発生し始めました。
クラスCの例:
Enum MyEnum
Foo
Bar
End Enum
他の場所:
If someValue = myEnum.Foo Then
テキスト.Foo
が強調表示され、「コンパイルエラー:定数式が必要です」というメッセージがポップアップ表示されます。
Googleで検索すると、これはランダムに発生する可能性があり、IDEを再起動したり、列挙型宣言の後にスペースを追加したりすると、IDEが再び機能し始める可能性があります。
- http://www.tek-tips.com/viewthread.cfm?qid=1355882
- http://www.vbforums.com/showthread.php?405564-RESOLVED-Constant-Expression-Required-Error-when-checking-Enum
これは本当にVBAの既知のバグですか?それが起こらないようにするために、またはVBAが発生した場合に確実に再び機能させるために、私にできることはありますか?
私の場合、Excelを閉じて再度開くことは役に立ちませんでした。PCを再起動している間すみません。
再起動後の更新:
マシンを再起動した後も問題が解決しませんでしたが、これは驚くべきことです。Public
列挙型定義の前に追加しようとしましたが(デフォルトでは公開される予定ですが、試してみようと思いました)、エラーは消えました。キーワードを削除しましたがPublic
(元のコードに戻ったため)、コンパイルと実行は正常に行われます。
これはVBAのランダムなバグのようです。経験豊富な開発者がこれが頻繁に発生することに気付いたかどうか知りたいのですが、列挙型を使用しないことをお勧めしますか?それとも、ブルームーンに一度ポップアップして、運が悪かっただけですか?
さらに開発してから6週間後に更新します。
このプロジェクトを開発している間、この問題は再発しなかったので、まれな問題のようです。