Excel 2013 bị lỗi khi biên dịch mã VBA.

Trong vài năm qua, tôi đã viết một gói phần mềm quản lý cho công việc của mình, nhưng tuần này một lỗi nghiêm trọng đã xảy ra. Ngay khi bắt đầu biên dịch, Excel bị sập với thông báo "Excel đã ngừng hoạt động...". Tôi đã cài đặt lại Office với sự trợ giúp từ nhóm Office 365, vì vậy đó là một quá trình cài đặt lại rất sạch sẽ, nhưng vấn đề vẫn còn. Tôi không nhớ mình đã làm bất cứ điều gì bất thường trong mã có thể gây ra lỗi nghiêm trọng như vậy và tôi đã bỏ chú thích khá nhiều dòng mã gần đây. Tôi đã làm theo hướng dẫn của "Adloki" trên một diễn đàn khác về việc đổi tên các điều khiển biểu mẫu nhưng điều này không hiệu quả. Tôi cũng đã thử mở chương trình mà không thực thi bất kỳ mã nào, nhưng một lần nữa, ngay khi tôi nhấp vào "Biên dịch", Excel bị sập. Có 18 mô-đun và nhiều trang tính, vì vậy tôi không biết mình có thể đăng mã nào để giúp đỡ. Tôi tự hỏi liệu có ai đã gặp phải vấn đề tương tự và có thể đề xuất bất kỳ giải pháp hoặc cách khắc phục nào không. Tôi lo sợ tệp đã bị hỏng và không thể khôi phục được. Các bản sao lưu gần đây đều không hoạt động, chỉ khi tôi khôi phục về thời điểm rất lâu trước đó thì chúng mới biên dịch lại được, nhưng trừ khi tôi hiểu được nguyên nhân gây ra vấn đề này, luôn có nguy cơ mắc lại lỗi tương tự. Tôi đang sử dụng Office 365 for Business trên máy tính cá nhân với Excel 2013 và VBA 7.1 trên hệ điều hành Windows 8.1.

Cảm ơn!




Trả lời:

Tôi nhận ra mình đang tự trả lời chính mình, nhưng tôi vẫn muốn chia sẻ cách giải quyết vấn đề này phòng trường hợp người khác thấy hữu ích. Trong lúc tuyệt vọng, tôi đã liên hệ với tác giả của Code Cleaner và anh ấy thật tuyệt vời. Anh ấy đã lấy tập tin bị "lỗi" và chạy nó qua trình biên dịch của riêng mình mà không gặp vấn đề gì. Anh ấy trả lại cho tôi và, thật kỳ diệu, nó hoạt động hoàn hảo. Lý thuyết của anh ấy là mối quan hệ giữa Windows 8 và VBA trong Excel 2013 có thể không đáng tin cậy vì, theo kinh nghiệm của anh ấy, lỗi tương tự đã xảy ra trên các cấu hình tương tự khác. Lý thuyết của tôi là một cờ quan trọng được thiết lập bởi mã, ngay cả khi nó sạch, và mã của tôi thì đúng như vậy. Một điều gì đó kích hoạt cờ này và một khi đã được thiết lập, nó chỉ có thể được gỡ bỏ bằng cách chạy tập tin qua một trình biên dịch khác trên một hệ thống khác. Tôi đã mất nhiều tuần để giải quyết vấn đề này và không nhận được phản hồi nào từ các diễn đàn khác, vì vậy một lần nữa xin cảm ơn Norman vì gợi ý của anh ấy. Ngoài việc chạy Rob's Code Cleaner, những người gặp phải tình huống tương tự có thể thử các cách khác như làm cho tất cả các tham chiếu điều khiển biểu mẫu nhất quán, ví dụ: [userform].controls.item("[tên điều khiển"]) - như đã đề cập ở trên, cũng như cập nhật phần mềm thông thường. Nhưng đôi khi, một giải pháp hoàn toàn không thể đoán trước và phi logic lại có hiệu quả.

Comments

Popular posts from this blog

Thu hẹp và mở rộng cột trong Excel

Excel 2016 - mở tất cả các tệp trong MỘT phiên bản

Excel: Tìm và trả về "số cuối cùng" trong một cột, trong đó cột chứa: cả ô trống và số dương tùy ý (lớn hơn 0).