Chào mọi người,
Hôm nay mình gặp một lỗi khá khó chịu khi sử dụng hàm tự tạo (User Defined Function - UDF) trong Excel. Cụ thể là khi gọi hàm này trong một ô tính, nó báo lỗi #NAME?. Mình đã thử kiểm tra lại code VBA và các tham số truyền vào nhưng không thấy có gì sai sót.
Sau một hồi tìm hiểu, mình phát hiện ra nguyên nhân thường gặp là do:
- Tên hàm trong code VBA không khớp hoàn toàn với tên hàm được gọi trong ô tính (kể cả viết hoa/thường).
- File Excel chứa hàm UDF đã được lưu dưới định dạng
.xlsxthay vì.xlsm(macro-enabled workbook). Khi lưu ở định dạng thông thường, các macro và hàm tùy chỉnh sẽ bị xóa đi. - Hàm UDF chưa được kích hoạt hoặc bị vô hiệu hóa trong cài đặt bảo mật của Excel.
- Module chứa hàm UDF bị xóa hoặc không được load cùng file.
Cách khắc phục:
- Kiểm tra kỹ tên hàm trong code VBA và trong ô tính, đảm bảo chúng giống nhau tuyệt đối.
- Lưu lại file Excel dưới định dạng
.xlsm. - Vào File > Options > Trust Center > Trust Center Settings > Macro Settings và đảm bảo tùy chọn cho phép chạy macro đã được chọn.
- Kiểm tra trong Developer > Visual Basic > Tools > References để đảm bảo module chứa hàm UDF được đánh dấu chọn. Nếu không thấy, bạn có thể cần chèn lại module đó.
Hy vọng chia sẻ này giúp ích cho các bạn khi gặp lỗi tương tự.