Die 15 wichtigsten VBA-Funktionen für Zahlen und Datum
Zahlen und Datum: Korrekten Datentyp benutzen
Korrekten Datentyp benutzen
Auf dieser Seite
Mit Bild
Wenn Datumswerte in Zeichenketten gespeichert werden, verbraucht das nicht nur mehr Platz, sondern erhöht das Risiko falscher Auswertungen erheblich.
Mit Bild
Bitte versuchen Sie nie, Datumswerte wie Zeichenketten zu behandeln und beispielsweise mit dem folgenden Code den Monat zu extrahieren:
Mit Bild
Sub MonatFalschSuchenMitGlueck() Dim strWert As String strWert = "24.12.2012" MsgBox "Monat: " & Mid(strWert, 4, 2) End Sub
Mit Bild
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.
Mit Bild
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.
Mit Bild
Richtig falsch wird das Ergebnis aber, wenn das Datum nicht mehr im vermuteten Format steht:
Mit Bild
Sub MonatFalschSuchenMitPech() Dim strWert As String strWert = "1.1.2013" MsgBox "Monat: " & Mid(strWert, 4, 2) End Sub
Mit Bild
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:
Mit Bild
Sub DatumsTest() Dim datWert As Date 'ok, Weihnachten 2012: datWert = #12/24/2012# 'Syntaxfehler, weil ungültiges Datum: datWert = #4/35/2012# End Sub