Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datum per VBA wandeln

Datum per VBA wandeln
08.05.2020 09:07:32
PeTeR
Werte VBA-Spezialisten,
in einer Spalte stehen zig-tausend Datumswerte als TEXT. Wenn ich . durch . ersetze, wird daraus ein echtes Datum. Das funktioniert leider nicht per VBA: .Replace What:=".", Replacement:="." wandelt den Datentyp nicht um. Also wandle ich in einer Schleife jede Zelle einzeln: Zelle.Value = CDate(Zelle.Value). Das dauert ewig :-(
Gibt es eine schnelle(re) Variante per VBA einen Text (01.01.2020) in ein Datum (01.01.2020) zu wandeln?
Vielen Dank für eure Anregungen
PeTeR
Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CDate()
08.05.2020 09:15:18
Fennek
Hallo,
ohne Kenntnis der wirklichen Inhalte der Zellen (NICHT der Ansaicht), geht nur der Tip mit "CDate". Manchmal hilft ein zusätzliches CLng().
mfg
AW: CDate()
08.05.2020 12:08:49
PeTeR
Hallo Fennek,
CDate benutze ich ja aktuell. ABER das dauert zu lange zig-tausend Zellen einzeln umzuwandeln: Zelle.Value = CDate(Zelle.Value). :-(
Noch eine andere Idee?
VG
PeTeR
Anzeige
AW: Array + CDate()
08.05.2020 12:28:12
Fennek
Hallo,
probiere zuerst alle relevanten Zellen in ein Array zu packen:
ungeprüft

Ar = Range(cells(1,1), cells(rows.count, 1).end(xlup))
for i = 1 to ubound(Ar)
Ar(i,1) = CDate(Ar(i,1)
next i
cells(1,1) = Ar
mfg
(in einem sonst leeren Sheet testen
Anzeige
AW: Datum per VBA wandeln
08.05.2020 09:15:34
Sigi
Hi Peter,
in Excel ganz einfach: = DATWERT(Text)
in VBA analog: DATEVALUE(Text)
Sigi
AW: Datum per VBA wandeln
08.05.2020 12:14:05
PeTeR
Hi Sigi,
vielen Dank für den Tip!
Datevalue gibt es in VBA nicht. Ausserdem müsste ich ja wieder jede Zelle einzeln umwandeln :-(
Noch eine Idee?
VG
PeTeR
DATEVALUE gibt es sehr wohl in VBA! (owT)
08.05.2020 12:41:57
EtoPHG

Anzeige
AW: DATEVALUE gibt es sehr wohl in VBA! (owT)
08.05.2020 13:06:33
PeTeR
SORRY - stimmt! Datevalue gibt es in VBA. Ich hatte bei den Worksheetfunktion gesucht.
Datevalue braucht ähnlich lange wie Cdate :-(
Schneller>Text in Spalten (owT)
08.05.2020 09:27:45
EtoPHG

AW: Schneller>Text in Spalten (owT)
08.05.2020 12:20:18
PeTeR
Hi,
vielen Dank für den Tip!
Text in Spalten ...Array(30, 4)... hat das gleiche Problem wie Ersetzen cells.replace...: Das funktioniert alles in Excel wunderbar, aber nicht per VBA. VBA "denkt" englisch und check einfach das Datum nicht :-(
Noch eine Idee?
VG
PeTeR
Anzeige
VBA denkt nicht, sondern führt aus...
08.05.2020 12:34:13
EtoPHG
aus, was du vorgibst Peter,
Ich behaupte mal, du hast einfach aufgezeichnet und nicht auf die Optionen der Datumsspalte geachtet, die du bei der Aufzeichnung von Text in Spalten hättest.
Gruess Hansueli
AW: VBA denkt nicht, sondern führt aus...
08.05.2020 12:59:52
PeTeR
Hallo Hansueli,
...deswegen "denkt" in Anführungsstrichen. ;-)
Mein Datum lautet 01.01.2020 09:00:00
Mein Text in Spalten benutzt die Fieldinfo:=4 (=TMJ)
Gibt es noch weitere Optionen?
VG
PeTeR
Anzeige
AW: VBA denkt nicht, sondern führt aus...
08.05.2020 13:19:48
Daniel
oha
sorry, warum jetzt plötzlich 01.01.2020 09:00:00 ?
in der Eingangsfrage war nur von einem Datum die rede, ohne Uhrzeit.
warum geben die meisten Fragesteller die Beschreibung ihrer Daten in ihrer ersten Anfrage immer nur verkürzt oder unvollständig an?
Gruß Daniel
..das fragt ein Profi u.VBA guter? naja....
08.05.2020 13:56:15
Helmut
kwt
AW: Datum per VBA wandeln
08.05.2020 14:07:26
Daniel
Hi
probiers mal so:
für das ? bitte die die Spaltennummer der Spalten mit den umzuwandelnden Texten eintragen:
Dim rngDatumswerte As Range
Dim rngHilfsspalte As Range
Set rngDatumswerte = ActiveSheet.UsedRange.Columns(?)
Set rngHilfsspalte = rngDatumswerte.Offset(0, 100)
rngHilfsspalte.FormulaR1C1 = "=IFError(Value(RC[-100]),RC[-100])"
rngHilfsspalte.NumberFormat = "DD.MM.YYYY hh:mm:ss"
rngDatumswerte.Value = rngHilfsspalte.Value
rngHilfsspalte.ClearContents
Gruß Daniel
Anzeige
AW: Datum per VBA wandeln
08.05.2020 14:26:47
PeTeR
Hallo Daniel,
vielen Dank für deinen Tipp und die Lösung!
An eine Hilfsspalte hatte ich auch schon gedacht. Evtl. sogar eine virtuelle Matrix, die nur im Makro existiert.
Ich werde es ausprobieren.
Danke!!
PeTeR
AW: Datum per VBA wandeln
08.05.2020 14:34:45
Daniel
Hi
"Evtl. sogar eine virtuelle Matrix, die nur im Makro existiert."
das entspricht dem Vorschlag von Fennek.
ich bevorzuge die Hilfsspaltenlösung.
der Grund hierfür ist, dass solche schleifenfreien Codes sich während der Programmentwicklung und in der Testphase einfacher im Einzelstepmodus durchklicken lassen.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige