Dựa trên nhận xét của bạn để Issun:
Cảm ơn lời giải thích. Trong trường hợp của tôi, đối tượng được khai báo và tạo trước điều kiện If. Vì vậy, Làm cách nào để sử dụng Nếu điều kiện để kiểm tra < Không có biến>? Nói cách khác, tôi không muốn thực thi My_Object.Compute nếu My_Object có < Không có biến>
Bạn cần kiểm tra một trong các thuộc tính của đối tượng. Nếu không nói cho chúng tôi biết đối tượng là gì, chúng tôi không thể giúp bạn.
Tôi đã thử nghiệm một số đối tượng phổ biến và nhận thấy rằng đã xuất hiện Collection
không có mặt hàng nào được hiển thị <No Variables>
trong cửa sổ xem. Nếu đối tượng của bạn thực sự là một bộ sưu tập, bạn có thể kiểm tra các điều kiện <No Variables>
sử dụng .Count
tài sản:
Sub TestObj()
Dim Obj As Object
Set Obj = New Collection
If Obj Is Nothing Then
Debug.Print "Object not instantiated"
Else
If Obj.Count = 0 Then
Debug.Print "<No Variables> (ie, no items added to the collection)"
Else
Debug.Print "Object instantiated and at least one item added"
End If
End If
End Sub
Nó cũng đáng chú ý là nếu bạn khai báo bất kỳ đối tượng As New
sau đó kiểm tra Is Nothing
trở nên vô dụng. Lý do là khi bạn khai báo một đối tượng As New
thì nó sẽ được tạo tự động khi nó được gọi đầu tiên, ngay cả khi lần đầu tiên bạn gọi nó là để xem nó có tồn tại hay không!
Dim MyObject As New Collection
If MyObject Is Nothing Then ' <--- This check always returns False
Điều này dường như không phải là nguyên nhân gây ra sự cố cụ thể của bạn. Nhưng, vì những người khác có thể tìm thấy câu hỏi này thông qua tìm kiếm của Google, tôi muốn đưa nó vào bởi vì đó là lỗi thường gặp của người mới bắt đầu.
'My_Object' được khai báo như thế nào? – GSerg
Bạn có thể làm rõ ý nghĩa của từ "không biến" không?Nếu My_Object là Nothing, nó chắc chắn có nghĩa là nó không trỏ đến một đối tượng. Ngoài ra, định nghĩa kiểu của My_Object là gì? –
"Tôi muốn My_Object.Compute chỉ được thực thi khi My_Object tồn tại." Mong muốn của bạn được cấp theo đây. (Có nghĩa là, là có bất kỳ kịch bản mà điều này sẽ * không * là trường hợp?) –