Excel VBAのクラスモジュールで定義されている列挙型を使用しています。これは正常に動作してきたが、私は列挙型変数の比較を行うたびにコンパイルエラーを取得開始しました:VBA列挙型で時折 "定数式が必要"エラーが発生する
クラスCExampleで:
他の場所Enum MyEnum
Foo
Bar
End Enum
:
If someValue = myEnum.Foo Then
テキスト.Foo
が強調表示され、「コンパイルエラー:定数式が必要です」というメッセージが表示されます。
Googleで検索すると、これがランダムに起こりうることが示唆され、IDEを再起動するか、enum宣言の後にスペースを追加すると修正が再開されます。
- 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 by defaultであることを意味していますが、enumの定義の前にPublic
を追加しようとしましたが、試してみると思いますが、エラーは消えました。私はPublic
キーワードを削除しました(私たちは元のコードに戻っています)、それでもコンパイルして正常に動作します。
これはVBAのランダムなバグです。私は、経験豊かな開発者がこれが頻繁に起こることを発見したかどうかを知ることに興味があります - あなたはenumを使用しないことをアドバイスしますか?それとも青い月に一度ポップアップして、私は不運だったのですか?
更新さらなる発展の6週間後:
問題は、このプロジェクトを開発する私の時間の残りの部分の間に再発しなかったので、それは珍しい問題であるように見えます。
「someValue = Foo Then ...」を実行するとどうなりますか? 'myEnum.'を取り除いてください。 –
再起動後、問題はまだ起こっています。 Cthulhuさん、あなたの提案をありがとうが、それは助けにはなりません - 同じコンパイルエラー。 –
バグと思われます。同じモジュールのコードを新しいモジュールにコピーし、再コンパイルします。それはいくつかのためにそれを解決するようです。 –