VBA: Bedingte - Ist Nichts
Es ist ein If
Zustand in einer VBA-Anwendung, wie unten gesehen:
If Not My_Object Is Nothing Then
My_Object.Compute
Wenn der code im debug-Modus ausgeführt, fand ich, dass die If
Zustand zurückgibt gilt auch, wenn My_Object
hat "Keine Variablen".
Könnte bitte jemand dies erklären? Ich will My_Object.Compute
werden nur dann ausgeführt, wenn My_Object
vorhanden ist.
InformationsquelleAutor der Frage StarDotStar | 2011-12-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf Ihren Kommentar zu Issun:
Müssen Sie prüfen, eine der Eigenschaften des Objekts. Ohne uns zu sagen, was das Objekt ist, wir können Ihnen helfen.
Ich habe den test mehrere gemeinsame Objekte und festgestellt, dass ein instanziiert
Collection
mit keine Elemente Hinzugefügt, zeigt<No Variables>
im watch-Fenster. Wenn Ihr Objekt ist in der Tat eine Sammlung, Sie können überprüfen für die<No Variables>
Bedingung mit den.Count
Eigenschaft:Es ist auch erwähnenswert, dass, wenn Sie erklären jedes Objekt
As New
dann dieIs Nothing
prüfen unbrauchbar. Der Grund dafür ist, dass, wenn Sie deklarieren ein ObjektAs New
dann wird es automatisch erstellt, wenn es ist zuerst genannt, auch wenn Sie das erste mal aufrufen, ist es zu sehen, wenn es vorhanden ist!Scheint dies nicht zu sein, die Ursache für Ihr problem. Da aber andere finden diese Frage durch eine Google-Suche, ich wollte es, weil es ist ein häufiger Anfänger-Fehler.
InformationsquelleAutor der Antwort mwolfe02
Nur weil Ihre Klasse object hat keine Variablen, bedeutet nicht, es ist nichts. Die Anmeldung und das Objekt und erstellen ein Objekt sind zwei verschiedene Dinge. Schauen und sehen, wenn Sie sind einstellen/erstellen des Objekts.
Nehmen Sie z.B. das dictionary-Objekt - einfach, weil es enthält keine Variablen bedeutet nicht, dass es nicht erstellt wurde.
Allerdings, wenn Sie deklarieren ein Objekt aber nie schaffen, es ist nichts.
InformationsquelleAutor der Antwort aevanko
In meinem Beispiel-code, ich war Einstellung
my object
zu nichts, und ich konnte nicht die "nicht" - Teil der if-Anweisung, um mit dem Objekt arbeiten. Ich habe versuchtif My_Object is not nothing
und auchif not My_Object is nothing
. Es kann nur einen syntax-Sache habe ich nicht herausfinden können, aber ich hatte keine Zeit zu Durcheinander herum, also habe ich ein wenig Abhilfe wie diese:InformationsquelleAutor der Antwort WannabeProger