In if-Anweisungen muss ich immer verwenden if isnull(x) or x = "" then
Gibt es einen Unterschied zwischen IsNull (x) und x = ""?
Was ist der Unterschied zwischen den beiden und warum funktioniert nicht jeder von ihnen in einigen Fällen?
In if-Anweisungen muss ich immer verwenden if isnull(x) or x = "" then
Gibt es einen Unterschied zwischen IsNull (x) und x = ""?
Was ist der Unterschied zwischen den beiden und warum funktioniert nicht jeder von ihnen in einigen Fällen?
NULL
ist das Fehlen eines Wertes *
""
ist eine Zeichenfolge der Länge Null
Durch implizite Konvertierung - ein Objekt, das für bisher noch nicht Macht return true beiden Fällen besiedelt . Allerdings, wenn Sie dort einen Wert von ""
zu setzen, wäre es falsch zurückgeben für isnull()
und True für = ""
* Credit Comintern für die Erklärung zu verbessern (siehe Kommentare)
isnull
bedeutet, dass der Wert nicht während bearbeiten bekannt ist:""
bedeutet, es ist NULL-Zeichenfolge *
* Credit: @Macro Man.
_Empty_ ist sehr verschieden von "". – Gustav
Korrekt. mein Fehler. (Obwohl ich sehe, dass dies ein übliches Missverständnis ist, da ich jetzt bemerkte, dass auch @Erik von Asmuth dies beantwortete, ist "" eine leere Zeichenfolge. " (Obwohl ich seine Idee mag,' If nz ([variable], "") = "" Dann ") [ich bin ziemlich neu hier - soll ich bearbeiten, was ich schrieb?] –
Ja, die Nz-Methode scheint unschlagbar. Wenn Sie Ihre Antwort bearbeiten können, gehen Sie einfach weiter. Frohe Weihnachten – Gustav
sagte Wie die anderen antworten, null ist nichts, "" ist eine leere Zeichenfolge.
für Um zu testen, sowohl für null und leere Variablen in Access VBA, verwenden Sie die folgenden Schritte aus:
If nz([variable], "") = "" Then do stuff
Die nz Funktion null Variablen wandelt auf "" oder 0
Wenn Sie das tun, zu überprüfen, zu Marken Sinn x muss eine Variante sein, und Null ist nicht "Nichts". Nichts bedeutet leer und es existiert ein spezieller Check dafür. diese
Run und sehen:
Dim x As Variant
Debug.Print IsEmpty(x) ' True
Debug.Print IsNull(x) ' False
Debug.Print x = "" ' True
Debug.Print Nz(x) = "" ' True
x = Null
Debug.Print IsEmpty(x) ' False
Debug.Print IsNull(x) ' True
Debug.Print x = "" ' Null
Debug.Print Nz(x) = "" ' True
x = ""
Debug.Print IsEmpty(x) ' False
Debug.Print IsNull(x) ' False
Debug.Print x = "" ' True
Debug.Print Nz(x) = "" ' True
können Sie Ergebnisse als Kommentare rechts zu 'debug.print' Zeilen hinzufügen, um die Lesbarkeit zu verbessern ... –
OK, nahm ein bisschen tippen ... – Gustav
perfekt, +1 von mir bereits gewährt :) –
, wenn ich für eine null/leere Zeichenkette überprüfen möchten ich
If x & "" <> "" then
Es mag genauer sein, zu sagen, dass null das Fehlen von Wert ist, um es mit 'Nothing' zu verwechseln.' IsNull (Nothing) 'ergibt false, weil' Nothing' eine Objektreferenz ist. – Comintern
@Comintern guter Punkt, ich werde meine Antwort aktualisieren –
Und Sie vergaßen _Empty_ – Gustav