我在Excel VBA中使用類模塊中定義的枚舉。這一直工作正常,但我已經開始讓每個我做枚舉變量的比較時編譯錯誤:VBA枚舉會偶爾出現「Constant Expression Required」錯誤
在課堂CExample:
Enum MyEnum
Foo
Bar
End Enum
在別處:
If someValue = myEnum.Foo Then
文本.Foo
將突出顯示,並彈出「編譯錯誤:需要常量表達式」消息。
Google上的搜索表明,這可以隨機發生,並修復了重新啓動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一個已知的bug?有什麼我可以做,以避免它發生,或可靠地讓VBA再次運作,如果它出現了?
就我而言,關閉並重新打開Excel沒有幫助。對不起,我重新啓動我的電腦。重啓後
更新:
問題重新啓動我的機器,這是令人驚訝後持續存在。我試着在枚舉定義前添加Public
(它們的意思是public by default,但我想我會試試看),並且錯誤消失了。我已經刪除了Public
關鍵字(所以我們回到我原來的代碼),它仍然編譯和運行良好。
看起來這是VBA中的一個隨機錯誤。我有興趣知道經驗豐富的開發人員是否經常發現這種情況 - 您是否建議不要使用枚舉?或者它會在藍色月亮中彈出一次,我只是不幸運?
6周進一步發展後更新:
的問題我的時間開發這個項目的剩餘時間內未復發,所以看起來這是一個罕見的問題。
當你做'如果someValue = Foo會發生什麼然後...'?消除'myEnum.'我的意思是 –
重新啓動後,問題仍在發生。感謝您的建議Cthulhu,但這並沒有幫助 - 相同的編譯錯誤。 –
似乎是一個錯誤。將同一模塊的代碼複製到新的代碼中,然後重新編譯。這似乎解決了一些。 –