Wie kann ich mit VBA ein Datum auslesen, welches nicht als Datum formatiert ist?

... komplette Frage anzeigen

3 Antworten

Wenn du Glück hast, ist das als Text (?) gespeicherte Datum in einem Format, dass VB als Datum erkennen kann. Dann reicht ein einfaches "CDate". 

Ansonsten müsstest du die Zeichenkette parsen. Das bedeutet, dass du festlegen musst: Die ersten Zeichen bis zum Punkt sind Tage, dann kommen zwei Stellen für den Monat und die letzten 4 Ziffern bilden das Jahr.

Dann kannst du dir das Datum zusammenbauen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von shikser
23.06.2016, 12:05

Alles klar, dann probiere ich das erstmal über cdate aus, alternativ dann über das (für mich noch unbekannte) parsen ;)

Vielen Dank, ich melde mich wieder

0

Am einfachsten geht das per Regular Expression (Regulärem Ausdruck).

Dazu bindest du in der VBA-Entwicklungsumgebung unter "Verweise" den Baustein "Microsoft VBScript Regular Expressions 5.5" ein (der ist bei mir jedenfalls nicht alphabetisch einsortiert, sondern irgendwo viel weiter oben).

Dann kannst du (in deinem Beispiel) mit dem Pattern

(\\d{2}\\.\\d{2}\\.\\d{4})

nach tt.mm.jjjj suchen.

In ein Datum (ggf. mit Uhrzeit) umwandeln kannst du das mit

WorksheetFunction.DateValue(Datumsstring)

bzw.

WorksheetFunction.DateValue(Datumsstring) + WorksheetFunction.TimeValue(Datumsstring)
Antwort bewerten Vielen Dank für Deine Bewertung

Ich habe 3 Hilfsspalten benötigt, das Ding kann aber jetzt mehr wie du denkst: (Dein O-Text in A2)

1. Leerzeichen innerhalb des Datums entfernen in B2
   =WECHSELN(A2;". ";".")

2. Suche nach ".20" (falls im 20. Jahrhundert, wenn nicht, bitte um Info) in C2
   =SUCHEN(".20";B2)

3. Suche nach dem Punkt vor ".20" in D2
   =SUCHEN(".";B2;C2-4)

4. Ergebnis als Datum
   =WENN(ISTZAHL(A2);A2;WENNFEHLER(DATWERT(TEIL(B2;D2-2;C2-D2+7));"kein Datum gefunden"))

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?