Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Wer hat Angst vor der bsen Null?

Der Nullwert kann unter VBA fr diverse Fehler sorgen. Schon das Zuweisen eines leeren Ergebnisses einer DLookup-Funktion an eine Variable mit dem Datentyp Long kostet den unbedarften VBA-Anwender Nerven. Abhilfe schafft die Nz-Funktion, wie folgender Beitrag zeigt.

Nullwerte mit Nz() entschrfen

Nullwerte tauchen beispielsweise auf, wenn man per DLookup einen Datensatz abfragt, der nicht in der angegebenen Datenherkunft enthalten ist. Die folgende Funktion gibt - mit der Artikel-Tabelle der Nordwind-Datenbank angewendet - ziemlich sicher einen Nullwert zurck:

Debug.Print DLookup("Artikel-Nr", "Artikel", "1=2")

Das ist deshalb so sicher, weil der als Kriterium angegebene Ausdruck fr keinen Datensatz wahr ist. Im Testfenster erzeugt diese Anweisung schlicht und einfach den Ausdruck Null.

Die folgende Prozedur deklariert eine Long-Variable und weist dieser das Ergebnis der DLookup-Abfrage zu:

Public Sub Nullwert()

    Dim l As Long

    l = DLookup("[Artikel-Nr]", "Artikel", 1 = 2)

End Sub

Der Aufruf der Prozedur erzeugt einen Laufzeitfehler '94' (ungltige Verwendung von Null).

Um diesem Fehler vorzubeugen, verwenden Sie die Nz()-Funktion. Die Funktion erwartet als ersten Parameter einen Ausdruck, der gegebenenfalls den Wert Null enthlt und als zweiten Parameter einen Wert, der beim Auftreten von Null im ersten Ausdruck ausgegeben werden soll.

Die folgende Anwendung gibt im Testfenster den Wert 0 aus:

Debug.Print Nz(Dlookup("[Artikel-Nr]", "Artikel", 1=2),0)

Auf die gleiche Weise verhindern Sie die Erzeugung eines Fehlers in obiger Prozedur:

Public Sub Nullwert()

    Dim l As Long

    l = Nz(DLookup("[Artikel-Nr]", "Artikel", 1 = 2), 0)

End Sub

Datum-Nullwerte

Die Nz-Prozedur lsst sich allerdings nicht nur verwenden, um Fehlermeldungen zu verhindern. Sie knnen damit auch gezielt "Ersatzwerte" einsetzen.

Wenn Sie beispielsweise den Wert eines Datumsfeldes einlesen, fr das im Falle eines leeren Feldes ein vorgegebenes Datum verwendet werden soll, verwenden Sie etwa folgenden Ausdruck:

Debug.Print Nz(Dlookup("Datum", "tblBestellungen", "BestellungID = 1"), Date())

Wenn das gesuchte Feld kein Datum enthlt, gibt die Anweisung das aktuelle Datum aus.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.