VBA Tipp: Funktion zum Prüfen, ob ein Textfeld leer ist

Aus DBWiki
Wechseln zu: Navigation, Suche

Anforderung

Es soll der Wert eines Textfeldsteuerelements oder der Wert einer Variablen daraufhin überprüft werden, ob er leer ist (keinen sichtbaren Wert enthält).

Das ist z.B. dann der Fall, wenn der Wert des Textfeldsteuerelements oder der Wert der Variablen

  • NULL ist.
    Einen Null-Wert kann man in VBA oder in Ausdrücken mit der Funktion IsNull() (IstNull()) ermitteln. In SQL-Ausdrücken ist jedoch die Prüfung mittels IS NULL stilgerechter und auch schneller in der Ausführung.
  • einen Null-String (leere Zeichenfolge, Leerstring) enthält.
    Ein Null-String kann z.B. entstehen, wenn der Benutzer einen Text eingibt, und ihn anschließend wieder löscht. Auch eine String-Variable kann einen Null-String enthalten. Ein Null-String wird durch die IsNull-Funktion nicht erfasst.
  • nur (ein oder mehrere) Leerzeichen enthält.
    Das kann bei Feldern vorkommen, die als Steuerelementinhalt einen Ausdruck mit Leerzeichen enthalten,
    z.B. =[Nachname] & " " & [Vorname]. Auch eine String-Variable kann ausschließlich Leerzeichen enthalten.

Lösung

Mit der folgenden Funktion, die in einem globalen Modul hinterlegt wird, kann ein Wert eines Textfeldsteuerelements oder eine Variable darauf überprüft werden, ob sie

  • entweder den Wert NULL
  • oder einen Null-String ("")
  • oder nur beliebig viele Leerzeichen (" ")

enthält.

Public Function Leer(Ausdruck As Variant) As Boolean
 
   'Quelle: www.dbwiki.net oder www.dbwiki.de
 
   Leer = Len(Trim(Ausdruck & vbNullString)) = 0
 
End Function

Aufruf

   ' auf leeres Feld prüfen
   If Leer(Me!MeinTextfeld) Then
   ' oder
   If Leer(Me!MeinTextfeld) = True Then
 
   ' auf nicht leeres Feld prüfen
   If Not Leer(Me!MeinTextfeld) Then
   ' oder
   If Leer(Me!MeinTextfeld) = False Then
 
   ' prüfen, ob zwei Felder leer sind
   If Leer(Me!MeinTextfeld1) And Leer(Me!MeinTextfeld2) Then
 
   ' prüfen, ob mindestens eines von zwei Feldern leer ist
   If Leer(Me!MeinTextfeld1) Or Leer(Me!MeinTextfeld2) Then
Wiki hinweis.png Anmerkung: Die obige Funktion Leer() hat mit der VBA-Funktion IsEmpty() (IstLeer()) nichts zu tun.