Tôi có một biến toàn cục là một phiên bản của lớp tùy chỉnh của tôi.
Làm cách nào để kiểm tra xem đối tượng đã được thiết lập chưa hoặc liệu tôi có cần khởi tạo nó hay không?
Tôi có một biến toàn cục là một phiên bản của lớp tùy chỉnh của tôi.
Làm cách nào để kiểm tra xem đối tượng đã được thiết lập chưa hoặc liệu tôi có cần khởi tạo nó hay không?
Câu trả lời:
If obj Is Nothing Then
' need to initialize obj: '
Set obj = ...
Else
' obj already set / initialized. '
End If
Hoặc, nếu bạn thích nó theo cách khác:
If Not obj Is Nothing Then
' obj already set / initialized. '
Else
' need to initialize obj: '
Set obj = ...
End If
obj Is Nothing
KHÔNG giống như kiểm tra IsNothing(obj)
! Cảm ơn các cú pháp chính xác để kiểm tra này ... không chắc chắn lý do tại sao IsNothing()
cư xử khác nhau ...
Not (obj Is Nothing)
dễ hiểu hơn Not obj Is Nothing
. Bộ não của tôi không biết "Không phải đối tượng" là gì!
Cách an toàn (không) để làm điều này - nếu bạn đồng ý với việc không sử dụng tùy chọn rõ ràng - là ...
Not TypeName(myObj) = "Empty"
Điều này cũng xử lý trường hợp nếu đối tượng chưa được khai báo. Điều này hữu ích nếu bạn chỉ muốn nhận xét ra một khai báo để tắt một số hành vi ...
Dim myObj as Object
Not TypeName(myObj) = "Empty" '/ true, the object exists - TypeName is Object
'Dim myObj as Object
Not TypeName(myObj) = "Empty" '/ false, the object has not been declared
Điều này hoạt động vì VBA sẽ tự động khởi tạo một biến chưa được khai báo dưới dạng kiểu Biến thể trống. Nó loại bỏ sự cần thiết của một Boolean phụ trợ để quản lý hành vi.
Option Explicit
. Nó không đạt được gì ngoại trừ các vấn đề. Để "chuyển đổi" hành vi, hãy sử dụng Biên dịch có điều kiện.