Programm ändern Schritt 4
Ein VBA-Programm ändern: Plausibilisierung des Geburtsdatums
Datumseingaben zu plausibilisieren ist sehr komplex und aufwendig. Theoretisch müsste man die Eingabe zunächst in die Werte für Tag, Monat und Jahr aufsplitten und dann sowohl technisch als auch logisch prüfen.
Eine technische Prüfung würde das Eingabeformat plausibilisieren, also:
Stellen 1+2 = numerisch Stelle 3 = ein Punkt Stellen 4+5 = numerisch Stelle 6 = ein Punkt Stellen 7-10 = numerisch
Diese technische Prüfung würde allerdings auch bei der Eingabe 99.99.9999 keinen Fehler finden, so dass eine fachliche Prüfung stattfinden muss. Diese ist recht komplex, denn hier müssen u.a. die Maximaltage je Monat unter Berücksichtigung von Schaltjahren etc. geprüft werden. Wir beschränken uns auf eine deutlich einfachere Methode der Datumsprüfung.
Für die Prüfung eines gültigen Datumswerts benutzen wir die VBA-Funktion IsDate(). Auszug aus der Online-Hilfe zur Funktion IsDate:
„IsDate gibt den Wert True zurück, wenn der Ausdruck ein Datum ist oder in ein gültiges Datum umgewandelt werden kann. Andernfalls wird False zurückgegeben. In Microsoft Windows liegen gültige Datumswerte im Bereich vom 1. Januar 100 n.Chr bis 31. Dezember 9999 n.Chr. Auf anderen Betriebssystemen können andere Bereiche gelten.“
Diese Prüfung der Datumseingabe setzt jedoch voraus, dass der eingegebene Wert auch exakt 10 Zeichen lang ist (bzw. unserem Eingabeschema entspricht: TT.MM.JJJJ).
Um dies herauszufinden, bedient man sich der VBA-Funktion Len(). Mit dieser Funktion ermittelt man die Länge eines Strings (siehe auch Online-Hilfe dazu).
Nun sind wir in der Lage, mithilfe der VBA-Funktionen Len() und IsDate() die Datumsplausibilisierung durchzuführen. Wenn wir jetzt feststellen, dass die Eingabe nicht korrekt ist, sollten wir den Nutzer auch darauf hinweisen. Dies erfolgt in der Regel durch Hinweise, die in einem separaten Fenster angezeigt werden.
Auch hier hilft uns VBA weiter und stellt uns die Funktion MsgBox zur Verfügung. Auszug aus der Online-Hilfe zur MsgBox Funktion:
Diese Funktion zeigt eine Meldung in einem Dialogfeld an und wartet darauf, daß der Benutzer auf eine Schaltfläche klickt. Es wird dann einen Wert vom Typ Integer zurückgegeben, der anzeigt, auf welche Schaltfläche der Benutzer geklickt hat.
Syntax: MsgBox(prompt[, buttons] [, title] [, helpfile, context])
Hinweis: Wenn bei solchen Hilfe-Seiten Argumente in eckigen Klammern stehen, so handelt es sich um optionale Argumente, d.h. diese müssen nicht zwingend benutzt werden. Im Fall der MsgBox-Funktion ist also lediglich der Hinweistext (prompt) notwendig.
Die Plausibilität der Datumsprüfung entspricht nun folgender Logik:

oder als Code:
Beispiel:
' Gültigkeitsüberprüfung des Datums Private Sub txtGebDatum_AfterUpdate() Dim sDate As String Dim dtDate As Date 'Eingabe "trimmen" sDate = Trim$(txtGebDatum.Value) 'Länge 0 prüfen If Len(sDate) > 0 Then 'Länge <> 10 prüfen If Len(sDate) <> 10 Then 'Hinweis anzeigen MsgBox "Ungültige Datumseingabe. " & _ "Bitte das Format TT.MM.JJJJ verwenden!" 'Eingabefeld leeren txtGebDatum.Value = "" Else 'Gültigkeit des Datums überprüfen If Not IsDate(sDate) Then 'Hinweis anzeigen MsgBox "Ungültige Datumseingabe. " & _ "Bitte das Format TT.MM.JJJJ verwenden!" 'Eingabefeld leeren txtGebDatum.Value = "" End If End If End If End Sub
Wie in diesem Beispiel sollte man grundsätzlich seinen Code gut dokumentieren („grüner“ Beschreibungstext). Diese sog. Kommentarzeilen werden durch ein Hochkomma eingeleitet und haben keinen Einfluss auf den Programmverlauf.
Neu ist hier die Bedingungsprüfung If – Then – Else. Diese WENN – DANN – SONST Konstruktion ist relativ selbsterklärend und für die einfache Nutzung wie in diesem Beispiel ist lediglich darauf zu achten, dass am Ende jeder If-Bedingung ein Then steht und das jeder Bedingungsblock mit einen End If abgeschlossen werden muss.