Bazując na swoim komentarzu do Issun:
Dzięki za wyjaśnienie. W moim przypadku obiekt jest zadeklarowany i utworzony przed warunkiem If. Więc, jak używać warunku If, aby sprawdzić < Brak zmiennych>? Innymi słowy, nie chcę, aby wykonać My_Object.Compute jeśli My_Object ma < Brak Zmienne>
Trzeba sprawdzić jedną z właściwości obiektu. Nie mówiąc nam, czym jest obiekt, nie możemy ci pomóc.
Zrobiłem test kilku popularnych obiektów i odkryłem, że utworzony egzemplarz Collection
bez dodanych elementów pokazuje <No Variables>
w oknie zegarka. Jeśli obiekt jest w istocie zbiorem, można sprawdzić stan <No Variables>
pomocą właściwości .Count
:
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
Warto również zauważyć, że jeśli zadeklarować dowolny obiekt As New
następnie sprawdzenie Is Nothing
staje się bezużyteczny. Powodem jest to, że gdy zadeklarujesz obiekt As New
, zostanie on utworzony automatycznie po pierwszym wywołaniu, nawet jeśli za pierwszym razem go sprawdzisz, czy istnieje!
Dim MyObject As New Collection
If MyObject Is Nothing Then ' <--- This check always returns False
To nie wydaje się być przyczyną twojego konkretnego problemu. Ale ponieważ inni mogą znaleźć to pytanie w wyszukiwarce Google, chciałem uwzględnić to pytanie, ponieważ jest to typowy błąd dla początkujących.
W jaki sposób zadeklarowano "Moje_Obiekt"? – GSerg
Czy możesz wyjaśnić, co masz na myśli przez "brak zmiennych"?Jeśli My_Object jest Nothing, to zdecydowanie oznacza, że nie wskazuje obiektu. Plus, jaka jest definicja typu My_Object? –
"Chcę, aby My_Object.Compute był uruchamiany tylko wtedy, gdy istnieje Mój obiekt." Twoje życzenie zostaje niniejszym przyznane. (Czy jest jakiś scenariusz, w którym to * nie * miałoby się tak dziać ?!) –