Đối tượng VBA Yêu cầu | Làm thế nào để khắc phục lỗi bắt buộc đối tượng trong Excel VBA?
Đối tượng được yêu cầu trong Excel VBA
Sai lầm là một phần của ngôn ngữ mã hóa nhưng thiên tài thực sự nằm ở chỗ tìm ra lỗi và sửa những lỗi đó. Bước đầu tiên trong việc sửa chữa những lỗi đó là sự thông minh trong việc tìm ra lý do tại sao những lỗi đó lại xảy ra. Nếu bạn có thể tìm ra lý do tại sao những lỗi đó lại đến thì việc sửa những lỗi đó là một công việc rất dễ dàng mà không phải đổ mồ hôi. Một trong những lỗi như vậy trong mã hóa VBA là "Đối tượng Bắt buộc".
Nếu bạn nhớ trong khi học các biến và gán kiểu dữ liệu cho các biến đó, chúng ta cũng có kiểu dữ liệu "Đối tượng". Khi kiểu dữ liệu đối tượng được gán và nếu đối tượng đó không tồn tại trong trang tính hoặc sổ làm việc mà chúng tôi đang đề cập thì chúng tôi sẽ nhận được thông báo lỗi VBA là “Đối tượng Bắt buộc” . Vì vậy, với tư cách là một lập trình viên mới, thông thường sẽ hoảng sợ trong những tình huống đó vì ở cấp độ bắt đầu, người mới bắt đầu không thể tìm ra nguyên nhân gây ra lỗi này.
Tại sao đối tượng bắt buộc lỗi xảy ra? (Và làm thế nào để khắc phục nó?)
Ok, cần có hai hoặc ba ví dụ để thực sự hiểu tại sao lỗi này xảy ra và cách khắc phục nó.
Bạn có thể tải xuống Mẫu Excel Yêu cầu Đối tượng VBA này tại đây - Mẫu Excel Yêu cầu Đối tượng VBAĐể biết ví dụ, hãy xem đoạn mã dưới đây.
Mã:
Sub Last_Row () Dim Wb As Workbook Dim Ws As Worksheet Dim MyToday As Date Set Wb = ThisWorkbook Set Ws = ThisWorkbook.Worksheets ("Data") Đặt MyToday = Wb.Ws.Cells (1, 1) MsgBox MyToday End Sub
Hãy để tôi giải thích cho bạn đoạn mã trên cho bạn.
Tôi đã khai báo ba biến và hai biến đầu tiên tham chiếu đến các đối tượng “Workbook” và “Worksheet”. Biến thứ ba đề cập đến kiểu dữ liệu "Ngày".
Khi các kiểu dữ liệu “Đối tượng” được gán cho biến, chúng ta cần sử dụng từ khóa “Đặt” để gán tham chiếu của đối tượng cho biến, vì vậy trong hai dòng tiếp theo bằng cách sử dụng từ khóa “Đặt”, tôi đã chỉ định tham chiếu của “ThisWorkbook” đến biến “Wb” vì biến này giữ kiểu dữ liệu đối tượng là “Workbook” và đối với biến “Ws”, tôi đã gán đối tượng bảng của trang tính “Data” trong sổ làm việc này.
Đặt Wb = ThisWorkbook
Đặt Ws = ThisWorkbook.Worksheets ("Dữ liệu")
- Trong dòng tiếp theo cho biến kiểu dữ liệu “Ngày”, tôi cũng đã sử dụng từ khóa “Đặt” để gán giá trị của giá trị ô A1 trong sổ làm việc này (Wb) và trong trang tính “Dữ liệu” (Ws).
Đặt MyToday = Wb.Ws.Cells (1, 1)
- Trong dòng tiếp theo, chúng tôi đang hiển thị giá trị của giá trị biến "MyDate" của giá trị ô A1 trong hộp thông báo trong VBA.
MsgBox MyToday
- Ok, hãy chạy đoạn mã này và xem kết quả chúng ta nhận được là gì.
Như bạn có thể thấy ở trên, nó hiển thị thông báo lỗi VBA là “Đối tượng Bắt buộc” . Được rồi, đã đến lúc kiểm tra lý do tại sao chúng tôi nhận được thông báo lỗi này.
- Trong hình ảnh thông báo lỗi trên trong phần mã trong khi hiển thị thông báo lỗi nó đã đánh dấu phần lỗi của mã bằng màu xanh lam.
- Vì vậy, câu hỏi vẫn là tại sao chúng tôi gặp lỗi này. Điều đầu tiên chúng ta cần xem là kiểu dữ liệu biến cụ thể này. Quay lại dòng mã trước mà chúng ta đã gán kiểu dữ liệu cho biến “MyDate”.
- Chúng tôi đã chỉ định kiểu dữ liệu biến là “Ngày” và bây giờ quay lại dòng lỗi ngay bây giờ.
Trong dòng này, chúng tôi đã sử dụng từ khóa “Đặt” trong khi kiểu dữ liệu của chúng tôi không phải là kiểu dữ liệu “Đối tượng”. Vì vậy, thời điểm mã VBA nhìn thấy từ khóa “Set”, nó giả định rằng nó là một kiểu dữ liệu đối tượng và nói rằng nó yêu cầu một tham chiếu đối tượng.
Vì vậy, điểm mấu chốt là từ khóa “Set” chỉ được sử dụng để tham chiếu đến các biến đối tượng như Worksheet, Workbook, v.v.…
Ví dụ 1
Bây giờ hãy xem đoạn mã dưới đây.
Mã:
Sub Object_Required_Error () Range ("A101"). Value = Application1.WorksheetFunction.Sum (Range ("A1: A100")) End Sub
Trong đoạn mã trên, chúng tôi đã sử dụng hàm trang tính “SUM” để nhận tổng giá trị ô từ A1 đến A100. Khi bạn chạy mã này, chúng tôi sẽ gặp lỗi bên dưới.
Giáo sư!! Nó cho biết “Lỗi thời gian chạy '424': Yêu cầu đối tượng.
Bây giờ chúng ta hãy xem xét kỹ mã bây giờ.
Thay vì sử dụng "Ứng dụng", chúng tôi đã sử dụng nhầm "Application1", do đó, điều này gặp phải lỗi "Đối tượng Bắt buộc" trong mã VBA.
Nếu từ “Tùy chọn rõ ràng” được bật thì chúng tôi sẽ gặp lỗi “Biến không được xác định”.
Những điều cần ghi nhớ
- Đối tượng Bắt buộc có nghĩa là tham chiếu kiểu dữ liệu đối tượng cần phải chính xác.
- Khi tùy chọn từ rõ ràng không được bật trong mã hóa thì chúng tôi sẽ gặp lỗi Bắt buộc đối tượng cho các từ biến sai chính tả và nếu tùy chọn Explicit được bật, chúng tôi sẽ nhận được lỗi không xác định biến đối với các từ biến sai chính tả.