VBA Tipp: Standardwerte in Null-Werte wandeln

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Es sollen zwei Werte miteinander verglichen werden. Bei Gleichheit soll Null als Ergenis ausgegeben werden; im anderen Fall soll das erste Argument im Ergebnis erscheinen.

VBA und Microsoft Access kennen keine Umkehrfunktion zur Nz()-Funktion, die in vielen SQL-Dialekten als NullIf() implementiert ist.

Lösung

Folgende Funktion kann in ein allgemeines VBA-Modul kopiert werden.

' Gibt einen NULL-Wert zurück, wenn die beiden angegebenen Ausdrücke in Wert und NullWert gleich sind.
Public Function NullIf(Wert As Variant, _
                       NullWert As Variant) As Variant
 
   'Quelle: www.dbwiki.net oder www.dbwiki.de
 
   If Wert = NullWert Then
      NullIf = Null
   Else
      NullIf = Wert
   End If
 
End Function

Aufruf

z.B. bei der Zuweisung eines Feldinhalts im Recordset:

   Dim rs As DAO.Recordset
   Dim strTest As String
 
   Set rs = ...
 
   rs.Edit
   strTest = Trim$(Nz(rs!EinFeld))
   rs!EinFeld = NullIf(strTest, vbNullString)
   rs.Update

Wiki-Links