Tôi đang sử dụng một enum được định nghĩa trong một mô-đun lớp trong Excel VBA. Điều này đã được làm việc tốt, nhưng tôi đã bắt đầu nhận được một lỗi biên dịch trên mỗi khi tôi làm một so sánh về biến enum:VBA enums cung cấp thỉnh thoảng "Constant Expression Required" lỗi
Trong lớp CExample:
Enum MyEnum
Foo
Bar
End Enum
Ở những nơi khác:
If someValue = myEnum.Foo Then
Văn bản .Foo
sẽ được tô sáng và thông báo "Lỗi biên dịch: Biểu thức liên tục bắt buộc" bật lên.
Tìm kiếm trên Google gợi ý rằng điều này có thể xảy ra ngẫu nhiên và sửa lỗi như khởi động lại IDE hoặc thêm dấu cách sau khi khai báo enum có thể làm cho nó bắt đầu hoạt động trở lại.
- http://www.tek-tips.com/viewthread.cfm?qid=1355882
- http://www.vbforums.com/showthread.php?405564-RESOLVED-Constant-Expression-Required-Error-when-checking-Enum
Đây có phải là thực sự là một lỗi được biết trong VBA? Có bất cứ điều gì tôi có thể làm để tránh nó xảy ra, hoặc đáng tin cậy có được VBA làm việc một lần nữa nếu nó hiện lên?
Trong trường hợp của tôi, việc đóng và mở lại Excel đã không hữu ích. Xin lỗi khi tôi khởi động lại PC của mình.
Cập nhật sau khi khởi động lại:
Vấn đề kéo dài sau khi khởi động lại máy tính của tôi, đó là đáng ngạc nhiên. Tôi đã thử thêm Public
trước định nghĩa enum (chúng có nghĩa là phải là public by default nhưng tôi nghĩ tôi sẽ thử) và lỗi biến mất. Tôi đã xóa từ khóa Public
(vì vậy chúng tôi quay lại mã ban đầu của mình) và nó vẫn biên dịch và chạy tốt.
Có vẻ như đây là lỗi ngẫu nhiên trong VBA. Tôi muốn được quan tâm để biết nếu các nhà phát triển có kinh nghiệm đã tìm thấy điều này đi lên thường xuyên - bạn sẽ khuyên không sử dụng enums? Hay nó bật lên một lần trong một mặt trăng màu xanh và tôi chỉ là không may mắn?
Cập nhật sau 6 tuần phát triển hơn nữa:
Vấn đề không tái diễn trong suốt phần còn lại của thời gian của tôi đang phát triển dự án này, vì vậy nó có vẻ như nó là một vấn đề hiếm.
Điều gì xảy ra khi bạn thực hiện 'Nếu someValue = Foo Sau đó ...'? Loại bỏ 'myEnum.' Ý tôi là –
Sau khi khởi động lại, vấn đề vẫn đang xảy ra. Cảm ơn đề nghị của bạn Cthulhu, nhưng điều đó đã không giúp - cùng một lỗi biên dịch. –
Dường như là một lỗi. Sao chép mã của cùng một mô-đun sang mã mới và biên dịch lại. Điều đó dường như giải quyết nó cho một số. –