Die 15 wichtigsten VBA-Funktionen für Zahlen und Datum

Zahlen und Datum: Korrekten Datentyp benutzen

∅ 2.8 / 18 Bewertungen

Korrekten Datentyp benutzen

Auf dieser Seite

Wenn Datumswerte in Zeichenketten gespeichert werden, verbraucht das nicht nur mehr Platz, sondern erhöht das Risiko falscher Auswertungen erheblich.

Bitte versuchen Sie nie, Datumswerte wie Zeichenketten zu behandeln und beispielsweise mit dem folgenden Code den Monat zu extrahieren:

Sub MonatFalschSuchenMitGlueck()
    Dim strWert As String
    
    strWert = "24.12.2012"
    MsgBox "Monat: " & Mid(strWert, 4, 2)
End Sub

Wenn Sie das testen, werden Sie hier das korrekte Ergebnis 12 erhalten. Aber ändern Sie nur einmal das Datum in strWert = "35.13.2011"! Das ist syntaktisch korrekt, aber als Datum natürlich untauglich.

In diesem Fall ist der problematische Teil des Codes nicht die Mid()-Funktion, sondern der ungeeignete String-Datentyp. Dadurch wird das Datum nicht auf Gültigkeit überprüft. Sie werden weiter unten sehen, wie sich das Problem lösen lässt.

Richtig falsch wird das Ergebnis aber, wenn das Datum nicht mehr im vermuteten Format steht:

Sub MonatFalschSuchenMitPech()
    Dim strWert As String
    
    strWert = "1.1.2013"
    MsgBox "Monat: " & Mid(strWert, 4, 2)
End Sub

Hier wird das Ergebnis .2 als angeblicher Monat angezeigt, weil Ihr Code von einer vorgegebenen Formatierung ausgeht, die Sie nur mit vielen, völlig unnötigen Prüfungen ermitteln können.

Das alles können Sie sich ersparen, wenn Sie Datumswerte immer im Date-Datentyp speichern, der ja nebenbei auch für gültige Werte sorgt:

Sub DatumsTest()
    Dim datWert As Date
    
    'ok, Weihnachten 2012:
    datWert = #12/24/2012#
    
    'Syntaxfehler, weil ungültiges Datum:
    datWert = #4/35/2012#
End Sub