Datum aus "Datum als Text" mit VBA
01.01.2025 05:48:12
Jens5
ein frohes neues Jahr wünsche ich Euch!
Zu meinen Stichwörtern gibt es hier viele Beiträge, die ich mir angesehen habe, ohne fündig zu werden. Daher bitte ich um Eure Hilfe.
Ich habe viele importierte Datumsangaben, die als Text ("TT.MM.JJJJ") vorliegen. Und zwar über mehrere Spalten, warum "Text in Spalten" zu aufwändig ist. Bisher habe ich den betroffenen Bereich im Tabellenblatt mit der "1" aus einer anderen Zelle multipliziert.
Jetzt würde ich diese einfache Maßnahme gerne per Makro ausführen. Oder etwas anderes Vergleichbares, aber möglichst einfach. Am liebsten ohne Schleife, quasi "in einem Rutsch" wie beim Werte-Einfügen/Multiplizieren im Tabellenblatt. Ich hab diese Nacht schon viel in Foren gesucht und ausprobiert, aber ohne Erfolg. ChatGPT hat mich über eine Stunde gekostet und konnte auch nicht helfen, meine letzte Hoffnung sind nun Menschen :-)
Zuerst habe ich gelernt, dass es gar nicht so einfach ist, eine numerische "1" ins Clipboard zu befördern, um sie dann als Wert - multiplizierend - in die Selection (wo die Datums-Strings stehen) einzufügen. Also, man kriegt schon eine "1" ins Clipboard, aber wenn man sie dann manuell im Tabellenblatt einfügen will, stehen nur Text-Einfüge-Optionen zur Verfügung (und damit keine mathematischen Operationen) und PasteSpecial schlägt ebenfalls fehl. Anscheinend kennt das Clipboard nur Strings.
Dann habe ich es mit Evaluate versucht (war ChatGPTs Idee), aber beide folgenden Varianten führen zu #WERT! in allen Zielzellen:
1.) Range(Selection.Address).Value = Evaluate("DATEVALUE(" & Selection.Address & ")")
2.) Range(Selection.Address).Value = Evaluate(Selection.Address & "*1")
Beides funktioniert aber im Tabellenblatt, wenn ich dort mit Hilfszellen arbeite (was ich aber nicht möchte), also, wenn in A1 ein solches Datum als Text steht, führen beide Formeln zum gewünschten Ergebnis (wisst Ihr selbstverständlich):
1.) =DATWERT(A1)
2.) =A1*1
Jedoch: die Evaluate-Methode funktioniert sehr gut, wenn sie auf numerische Werte angewendet wird (in Selection stehen jetzt nur Zahlen):
Range(Selection.Address).Value = Evaluate(Selection.Address & "*5")
klappt einwandfrei.
Irgendwie scheint die Kombination aus Text und Mathematik - die ja tatsächlich etwas unlogisch ist, aber im Tabellenblatt eben funktioniert - im VBA-Bereich Schwierigkeiten zu bereiten.
Meine Bitte wäre zunächst, ob mir jemand bestätigen könnte, dass es sich auf seinem/ihrem System genauso verhält (oder auch nicht). Dann, ob ich einen Denk- oder sonstigen Fehler begehe. Zuletzt vielleicht sogar eine Lösung... :-) Beispieldatei habe ich leider nicht hochgeladen bekommen (Restriktion Dateiformate). Wenn mir das jemand erklärt, hole ich es nach.
Ich danke euch! Viele Grüße
Jens
Anzeige