Prüfen, ob ein String als Datum gelesen werden kann
Schritt-für-Schritt-Anleitung
-
String definieren: Zuerst musst Du den String definieren, den Du auf ein Datum prüfen möchtest. Beispiel:
Dim txt As String
txt = "01-Dez-2003"
-
Überprüfen, ob der String ein Datum ist: Verwende die Funktion IsDate()
in VBA, um zu prüfen, ob der String als Datum gelesen werden kann:
If IsDate(txt) Then
MsgBox "Der String kann in ein Datum umgewandelt werden."
Else
MsgBox "Der String ist kein gültiges Datum."
End If
-
Fehlerbehandlung: Wenn Du CDate()
verwenden möchtest, solltest Du eine Fehlerbehandlung einfügen:
Dim datum As Date
On Error Resume Next
datum = CDate(txt)
If Err.Number <> 0 Then
MsgBox "Nix Datum!"
Err.Clear
End If
Häufige Fehler und Lösungen
-
Laufzeitfehler 13 (Typenunverträglichkeit): Dieser Fehler tritt häufig auf, wenn CDate()
auf einem System nicht funktioniert. Überprüfe die Ländereinstellungen Deines Computers oder in Excel, da unterschiedliche Einstellungen "Dez" (für Dezember) möglicherweise nicht erkennen.
-
Problem mit Monatsabkürzungen: Bei verschiedenen Ländereinstellungen kann es sein, dass z.B. "Dez" in englischen Systemen nicht erkannt wird. Daher kann es hilfreich sein, eine speziellere Behandlung für solche Abkürzungen zu implementieren.
Alternative Methoden
Falls Du nicht mit IsDate()
oder CDate()
arbeiten möchtest, kannst Du den String auch manuell analysieren, um zu überprüfen, ob er dem Datumsformat entspricht. Eine einfache Regex-Überprüfung könnte hier helfen, ist jedoch in VBA aufwendiger.
Praktische Beispiele
Hier ist ein einfaches Beispiel, wie Du die oben genannten Methoden kombinieren kannst:
Sub PrüfenObDatum()
Dim txt As String
txt = "01-Dez-2003"
If IsDate(txt) Then
MsgBox "Der String " & txt & " ist ein gültiges Datum."
Else
MsgBox "Der String " & txt & " kann nicht in ein Datum umgewandelt werden."
End If
Dim datum As Date
On Error Resume Next
datum = CDate(txt)
If Err.Number <> 0 Then
MsgBox "Fehler: " & Err.Description
Err.Clear
Else
MsgBox "Das Datum ist: " & datum
End If
End Sub
Tipps für Profis
-
VBA CDate Funktion: Nutze CDate()
vorsichtig, insbesondere bei Strings, die aus verschiedenen Ländern stammen. Eine zusätzliche Prüfung durch IsDate()
kann Dir helfen, Laufzeitfehler zu vermeiden.
-
Datenvalidierung in Excel: Wenn Du Daten in Excel importierst, stelle sicher, dass die Datenquelle eindeutig ist. Eine Überprüfung, ob ein String als Datum gelesen werden kann, kann helfen, spätere Probleme zu vermeiden.
FAQ: Häufige Fragen
1. Kann ich auch andere Datumsformate prüfen?
Ja, die Funktion IsDate()
unterstützt verschiedene Formate. Achte jedoch auf die Ländereinstellungen, da diese die Erkennung beeinflussen können.
2. Was ist der Unterschied zwischen CDate und IsDate?
IsDate()
prüft, ob der String in ein Datum umgewandelt werden kann, während CDate()
versucht, den String tatsächlich in ein Datum zu konvertieren. Bei CDate()
kann es zu Laufzeitfehlern kommen, wenn das Format nicht unterstützt wird.