Chào các anh chị em trong diễn đàn,
Hôm nay mình muốn chia sẻ một vấn đề mình vừa gặp phải và cách khắc phục, hy vọng sẽ giúp ích cho mọi người. Mình có viết một vài hàm tùy chỉnh (User Defined Functions - UDF) bằng VBA để tự động hóa một số tác vụ trong file Excel của mình. Khi đang dùng ngon lành thì tự dưng hôm sau mở file lên, các ô sử dụng hàm UDF đó đều báo lỗi #NAME?.
Ban đầu mình khá hoang mang, kiểm tra lại code VBA thì thấy không có gì thay đổi. Sau một hồi tìm hiểu và thử nghiệm, mình phát hiện ra nguyên nhân:
- File Excel của mình được lưu dưới định dạng
.xlsx(định dạng mặc định, không chứa macro). Khi lưu ở định dạng này, các hàm VBA tùy chỉnh sẽ không được lưu theo. Do đó, khi mở file trên một máy tính khác hoặc sau một thời gian, Excel không nhận diện được các hàm này và trả về lỗi#NAME?. - Một nguyên nhân khác có thể là do tùy chọn bảo mật của Excel đã vô hiệu hóa các macro.
Cách khắc phục:
- Lưu file ở định dạng hỗ trợ Macro: Thay vì lưu là
.xlsx, hãy lưu file với định dạng Excel Macro-Enabled Workbook (.xlsm). Thao tác này sẽ đảm bảo hàm UDF của bạn được lưu cùng với file và hoạt động bình thường. - Kiểm tra cài đặt Trust Center: Vào File > Options > Trust Center > Trust Center Settings... > Macro Settings. Đảm bảo rằng tùy chọn Disable all macros with notification hoặc Enable all macros (not recommended) được chọn, và bạn đã cấp quyền tin cậy cho file của mình nếu cần.
Hy vọng mẹo nhỏ này sẽ giúp các bạn tránh được lỗi khó chịu trên. Có ai gặp trường hợp tương tự hoặc có cách xử lý nào khác không, cùng chia sẻ nhé!