Mục lục
Một trong những lỗi phổ biến nhất mà chúng tôi gặp phải khi làm việc với VBA trong Excel là loại do người dùng xác định không được xác định. Trong bài viết này, tôi sẽ chỉ cho bạn lý do xảy ra lỗi này và cách giải quyết lỗi này.
Tải xuống Sách bài tập thực hành
Tải sách bài tập thực hành này xuống để thực hành trong khi bạn đang đọc bài viết này.
Loại do người dùng xác định Không xác định.xlsm
2 Nguyên nhân và giải pháp cho Do người dùng xác định Loại không được xác định trong Excel VBA
Có 2 vấn đề chính đằng sau lỗi thường gặp này trong Excel VBA . Hãy cùng tìm hiểu chi tiết và tìm ra cách giải quyết.
1. Lỗi Chính tả Khi Khai báo Biến
Đây là nguyên nhân chính gây ra lỗi này. Thông thường, lỗi “Loại do người dùng xác định không được xác định” xảy ra do lỗi chính tả khi khai báo biến.
Hãy xem các dòng mã sau.
5186
Nếu bạn chạy mã này, bạn sẽ nhận được một hộp lỗi thông báo cho bạn về sự hiện diện của lỗi “Loại do người dùng xác định không được xác định”. Cùng với nó, bạn sẽ tìm thấy dòng mã thứ hai được đánh dấu bằng màu xanh lam, nơi tôi đã viết “strng” thay cho “string” .
Tôi hy vọng bạn hiểu được vấn đề. VBA không thể nhận ra loại biến “strng” , đó là lý do tại sao nó coi nó là một loại biến mới và nghĩ rằng bạn đã định nghĩa nó ở đâu đó. Nhưng khi nóthấy rằng bạn đã không khai báo nó ở bất cứ đâu, nó sẽ báo lỗi.
Vì vậy, trong khi chạy các mã VBA đơn giản, nếu bạn vẫn gặp phải lỗi này, trước tiên hãy kiểm tra tất cả cách viết của các loại biến của bạn.
2. Thiếu tham chiếu phù hợp
Đây là một nguyên nhân khác gây ra lỗi này. Đó là một sự thiếu tham chiếu thích hợp. Đôi khi, chúng tôi sử dụng một số đối tượng trong mã của mình cần tham chiếu thích hợp từ hộp Tham chiếu Visual Basic . Mặt khác, VBA không nhận ra đối tượng.
Hãy xem mã VBA sau đây.
5067
Chạy mã này. Bạn sẽ gặp cùng một lỗi cũ “Loại do người dùng xác định không được xác định”, làm nổi bật Đối tượng từ điển . Điều này là do VBA không thể nhận ra đối tượng Từ điển và coi đó là biến do người dùng xác định, vốn không được định nghĩa nhầm.
Bây giờ câu hỏi lớn nhất là làm thế nào để giải quyết lỗi này? Dễ. Có 2 cách để giải quyết lỗi này.
⧪ Giải pháp 1: Kiểm tra Tham chiếu Điều kiện tiên quyết từ Hộp Tham chiếu Hộp Trực quan
Đây là cách thông minh nhất để giải quyết vấn đề này. Chuyển đến Công cụ > Tham khảo trong dải băng Visual Basic . Nhấp vào Tham khảo .
Một hộp thoại có tên Tham khảo sẽ mở ra. Cuộn và tìm Microsoft Scripting Runtime (Điều này phụ thuộc vào đối tượng mà bạn đang sử dụng. Từ điểnđối tượng cần Microsoft Scripting Runtime để được công nhận. Vì vậy, trong khi sử dụng một đối tượng trong mã VBA , bạn phải biết điều kiện tiên quyết của nó để được VBA nhận ra. Truy cập liên kết này để biết thêm thông tin.). Hãy kiểm tra.
Bây giờ hãy quay lại và chạy mã. Bạn sẽ không nhận được bất kỳ lỗi nào. Bởi vì VBA có thể nhận ra Đối tượng từ điển vào thời điểm này.
⧪ Giải pháp 2: Khai báo nó là Đối tượng thuần túy thay vì Đối tượng cụ thể
Có một cách khác để giải quyết vấn đề này. Bạn có thể khai báo đối tượng là một đối tượng thuần túy, thay vì Đối tượng từ điển .
Hãy chú ý các dòng mã sau.
1667
Ở đây tôi đã khai báo biến MyDictionary là một đối tượng đơn giản, không phải Dictionary. Bây giờ nếu bạn chạy mã này, bạn sẽ không gặp bất kỳ lỗi nào.