Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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
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

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
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
Anzeige
..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
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
Anzeige
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige