HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Basiskenntnisse in VBA
Christian
27.04.2026 13:58:20
AW: eingegebenes Datum mit VBA in TT.MM.JJJJ umwandeln
Hallo Daniel, schreibe im Moment vom Handy aus, bin erst heute abend wieder zuhause um es testen zu können. Aber ich kann soviel schonmam sagen, die Daten haben alle das Format 1. Januar 1974 also Monat ausgeschrieben, Tag ohne führende 0 und Jahr 4stellig. Diese Daten sollen wie sie sind in tt.mm.jjjj umgewandelt werden. Bei manchen fehlt der Tag oder teilweise zusätzlich auch der Monat. In diesem Fall soll dann der monats- bzw. Im zweiten Fall das Jahresende ausgegeben werden. Auch im Format tt.mm.jjjj

Gruß
Christian

Vielen Dank schonmal
Als Antwort auf diesen Beitrag
daniel
27.04.2026 13:44:44
AW: eingegebenes Datum mit VBA in TT.MM.JJJJ umwandeln
HI
du musst hier einer Fallunterscheidung machen:
a) Eingabe nur Jahreszahl
b) Eingabe mit Monat und Jahr
c) Eingabe vollständig.

dabei wäre es hilfreich zu wissen, welche Varianten der Datumseingabe alles vorkommen können.
Wenn du es aus dem Internet kopierst, dann müsste es ja halbwegs eindeutig sein.

wichtig wäre, dass du die Werte als TEXT übernimmst, damit Excel nicht schon von alleine anfängt, wie Werte in Datumswerte umzuwandeln.
dh du solltest sie dann auch nicht direkt überschreiben, sondern das ermittelte Datum in die Nachbarzelle schreiben, denn dort willst du dann ja nicht Texte, sondern Zahlen haben.

die Umwandlung mit der Fallunterscheidung könnte dann für einen Wert so aussehen:

dim Eingabe as string

dim Datum as string

Eingabe = ".. dein Datumsstext..."

If Eingabe like "####" Then '--- nur die Jahreszahl
Datum = Cdate("31.12." & Eingabe)
Else If Eingabe like "[JFMASOND]* ####" Then '--- Monat und Jahreszahl am ende
Datum = Worksheetfunction.EoMonth(CDate(Eingabe), 0)
Elseif IsDate(Eingabe) then '--- ale anderen Texte, die wie ein Datum aussehen
Datum = Cdate(Eingabe)
Else
Datum = "Datum nicht ermittelbar
end if
Cells(x, y).FormulaLocal = Datum



Achtung, ich behandle die Variable "Datum" als Textstring, damit ich auch die Fehlermeldung ohne Fehler ausgeben kann.
damit der Text dann von Excel in ein korrekte Datum übernommen wird, sollte man den Wert in die .FormulaLocal-Eigenschaft der Zelle schreiben.
Würde man in .Value schreiben, bräuchte man das amerikanische Format. Das CDate erzeugt aber das deutsche (bzw das Lokale), daher der Wert in .FormulaLocal.

Gruß Daniel
Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.