Đối tượng VBA Yêu cầu - Làm thế nào để sửa lỗi đối tượng bắt buộc 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 xảy ra, 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à "Yêu cầu đối tượng."

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 chỉ định 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 đến, 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, là một lập trình viên mới, thông thường sẽ cảm thấy hoảng sợ trong những tình huống đó bởi vì, ở cấp độ bắt đầu, một 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ó?)

Được rồi, cần 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.

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 chỉ định 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 đã gán tham chiếu của “ThisWorkbook” cho 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 bảng tính 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à “Yêu cầu đối tượng”. Đượ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, nơi 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 ta đã 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 ta sẽ gặp lỗi dưới đây.

Giáo sư!! Nó nói, “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 rõ ràng từ 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ả.

thú vị bài viết...