Zahlen und Datum
Korrekten Datentyp benutzen
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.2011"
MsgBox "Monat: " & Mid(strWert, 4, 2)
End SubWenn 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.2012"
MsgBox "Monat: " & Mid(strWert, 4, 2)
End SubHier 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 2011:
datWert = #12/24/2011#
'Syntaxfehler, weil ungültiges Datum:
datWert = #4/35/2011#
End SubDies ist eine Leseprobe
Möchten Sie den Beitrag komplett lesen? Dann werden Sie Probemitglied und testen Sie akademie.de 14 Tage kostenlos!
Auf VBA: 15 wichtige VBA-Funktionen für Zahlen und Datum erfahren Sie mehr über diesen Beitrag und die weiteren Leseproben.
Weitere Informationen finden Sie auf unserer Infoseite zur Mitgliedschaft und in unseren AGB.
Ich bin bereits Mitglied