Steht in einer bestimmten Excel-Zelle ein Datum?

Wie überprüft man, ob etwas ein Datum ist? Meistens wird die Funktion IsDate verwendet. Doch die liefert nicht immer optimale Ergebnisse.

Um zu überprüfen, ob auf dem ersten Tabellenblatt in Zelle B2 ein Datum steht, könnte man etwa folgenden VBA-Code verwenden

Dim sh As Worksheet
Set sh = Sheets(1)
If IsDate(sh.Range("B2").Value) Then
   ' tu, was in diesem Fall zu tun ist
End If

Das funktioniert aber nicht immer richtig gut.

Warum? Weil IsDate prüft, ob etwas ein Datum ist oder in ein Datum konvertiert werden kann. Es könnte z.B. auch Text sein, und in dem Fall hängt das Ergebnis von der Sprach- und damit Datumseinstellung des Betriebssystems ab. Siehe auch hier: String in Datum konvertieren.

Um zu überprüfen, ob wirklich bereits ein Datum in der Zelle steht, also es nicht nur wie ein Datum aussieht, ist die Funktion TypeName besser geeignet.

If TypeName(sh.Range("B2").Value) = "Date" Then
   ' tu, was in diesem Fall zu tun ist
End If

Die Bedingung innerhalb der If-Anweisung ist nur dann erfüllt, wenn die Zelle B2 ein Datum enthält, egal entsprechend welcher Spracheinstellung dieses formatiert ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.