2016-04-28 9 views
0

Prüft diese Anweisung in VB auf die Existenz des Objekts, oder überprüft es, ob der Inhalt null ist? Ich denke, es wird überprüft, ob der Inhalt null ist, aber ich würde es gerne überprüfen. Danke im Voraus."Wenn nicht _____ Nichts ist" und was es überprüft

+0

Ich würde vorschlagen, Klammern für die Übersichtlichkeit im Allgemeinen zu verwenden: 'Wenn nicht (___ ist nichts)'. In einigen Kontexten würde dies ein Problem mit der Reihenfolge der Operationen verhindern (obwohl prolly nicht hier, ich gebe zu). Ich würde auch vorschlagen, dass Sie ein paar Zeilen Kontext angeben, damit wir wissen, welche Art von "____" ist "____". – Smandoli

Antwort

1

Das Konzept von "null" in VBA (im Sinne von NullReferenceException -null, wenn Sie mit C# oder NullPointerException in Java vertraut sind) wird mit dem Schlüsselwort Nothing abgedeckt. Dies gilt sowohl für VB6 (und früher) als auch für VB.NET.

Dim foo As Object 
Debug.Print foo.Bar ' boom, the dreaded runtime error 91 shows up 

Ihre Interpretation von Nothing ist also korrekt.

Im Gegensatz zu Java oder C#, können Sie nicht den Vergleichsoperator (== in C#/Java, = in VBA) verwenden, um eine Null-Check-in VBA zu machen, so dass statt (und in ähnlicher Weise wie SQL), Sie verwenden das Is Stichwort:

If foo Is Nothing Then ' if (foo == null) { } 

oder die negative Form:

If Not foo Is Nothing Then ' if (foo != null) { } 

Beachten Sie, dass diese Formulierung ungültig ist, weil Nothing nicht negiert werden kann:

If foo Is Not Nothing Then ' incorrect formulation, if (foo == !null) { } 

Die Dinge werden matschig und verwirrend, wenn man bedenkt, dass VBA eine IsNull Funktion hat .... und dann auch IsEmpty und entsprechenden Null, vbNull, Empty und vbEmpty Werte - aber diese sind nicht in den Anwendungsbereich Ihrer Frage und sind leicht auf MSDN und Stack Overflow zu finden.

Verwandte Themen