Я использую перечисление, определенное в модуле класса в Excel VBA. Это работает нормально, но я начал получать ошибку компиляции каждый раз, когда я сравниваю переменные enum:
В классе 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? Есть ли что-нибудь, что я могу сделать, чтобы избежать этого, или надежно заставить VBA работать снова, если это произойдет?
В моем случае закрытие и повторное открытие Excel не помогло. Извините меня, когда я перезагружаю свой компьютер.
Обновление после перезагрузки:
Проблема продолжалась после перезагрузки моей машины, что удивительно. Я попробовал добавить Public
перед определением enum (они должны быть public по умолчанию, но я думал, что дам попробуйте), и ошибка исчезла. Я удалил ключевое слово Public
(так что мы вернулись к исходному коду), и он все еще компилируется и работает нормально.
Это похоже на случайную ошибку в VBA. Мне было бы интересно узнать, нашли ли опытные разработчики это часто - не советовали ли вы использовать перечисления? Или он появляется один раз в голубой луне, и мне просто не повезло?
Обновление после 6 недель дальнейшей разработки:
Проблема не повторялась в течение оставшейся части моего времени, разрабатывая этот проект, поэтому похоже, что это редкая проблема.