Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: mit VBA yyyymmdd in dd.mm.jjjj umwandeln

mit VBA yyyymmdd in dd.mm.jjjj umwandeln
09.07.2019 15:05:17
Werner
Hallo Forum,
ich habe ein Datum in der numerischen Form yyyymmdd (20190709) und möchte nun den Folgetag errechnen und diesen im Format dd.mm.jjjj ausgeben.
Bisher baue ich aus dem String yyyymmdd das Datum im Format dd.mm.jjjj zusammen und nutze dann DateAdd(), um den Folgetag zu ermitteln.
Gibt es dafür einen einfacheren Weg?
Bisher
Gruß Werner
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit VBA yyyymmdd in dd.mm.jjjj umwandeln
09.07.2019 15:27:18
UweD
Hallo
auf das dateAdd() könntest du verzichten und anstelle +1 rechnen

Dim DatumText As String
Dim DatumNeu As Date
DatumText = "20190709"
DatumNeu = DateSerial(Left(DatumText, 4), Mid(DatumText, 5, 2), Right(DatumText, 2)) + 1
LG UweD
AW: mit VBA yyyymmdd in dd.mm.jjjj umwandeln
09.07.2019 15:56:52
Werner
Hallo UweD.
Danke!
Anzeige
AW: mit VBA yyyymmdd in dd.mm.jjjj umwandeln
09.07.2019 17:20:52
Daniel
Hi
Noch ne Variante
folgeTag = CDate(Format(20190709, "0000-00-00")) + 1
Gruß Daniel
AW: mit VBA yyyymmdd in dd.mm.jjjj umwandeln
09.07.2019 18:12:50
Werner
Hallo Daniel,
herzlichen Dank für Dein Beispiel. Es funktioniert prima.
Jetzt habe ich aber ein Folgeproblem: als Ergebnis hätte ich das Datum sehr gerne wieder in der Form yyyymmdd. Wie mache ich das?
Gruß Werner
Anzeige
AW: mit VBA yyyymmdd in dd.mm.jjjj umwandeln
09.07.2019 18:43:01
Daniel
Hi
naja, auch wieder mit Format: Format(Datumswert;"YYYYMMDD")
wobei Format einen Text liefert, dh wenn du den Wert als Zahl benötigst, noch CLng(...) umwandeln, oder darauf hoffen, dass es im implizite Typumwandlung bei Bedarf macht.
Gruß Daniel
AW: mit VBA yyyymmdd in dd.mm.jjjj umwandeln
09.07.2019 18:43:09
Daniel
Hi
naja, auch wieder mit Format: Format(Datumswert;"YYYYMMDD")
wobei Format einen Text liefert, dh wenn du den Wert als Zahl benötigst, noch CLng(...) umwandeln, oder darauf hoffen, dass es im implizite Typumwandlung bei Bedarf macht.
Gruß Daniel
Anzeige
AW: mit VBA yyyymmdd in dd.mm.jjjj umwandeln
09.07.2019 20:42:26
Werner
Hallo Daniel,
leider schaffe es nicht, den Folgetag in der Schreibweise yyyymmdd zu erhalten.
Mein Test-Code:
Debug.Print CDate(Format(20190228, "0000-00-00")) + 1
Debug.Print CDate(Format(20190228, "yyyyddmm")) + 1
Beim 2. CDate erhalte ich den Laufzeitfehler 6. Was mache ich falsch?
Zum Verständnis: ich brauche den Folgetag in den beiden Schreibarten dd.mm.yyyy und yyyymmdd.
Gruß Werner
Anzeige
AW: mit VBA yyyymmdd in dd.mm.jjjj umwandeln
09.07.2019 20:58:33
Daniel
Hi
dein Fehler ist, dass du dir nicht klar darüber bist, wann du ein echtes Exceldatum vorliegen hast (das ist eine Zahl, die fortlaufend ab dem 1.1.1900 gezählt wird und jeden Tag um 1 erhöht wird) und wann einen Text oder eine Ziffernfolge, die für ich wie ein Datum aussieht, aber für Excel nichts mit einem Datum zu tun hat (20190709), sondern einfach nur irgendwelche Dinge planlos zusammenschmeißt.
wenn du ausgehend von der Ziffernfolge 20190709 den Folgetag in der gleichen Form haben willst, musst du folgendes verwenden:
Format(CDate(Format(20190709;"0000-00-00")) + 1, "YYYYMMDD")
also in folgender Abfolge:
1. Ziffernfolge in Datum wandeln
2. zum Datum einen Tag hinzuaddieren
3. Datum in Ziffernfolge zurückwandeln.
Gruß Daniel
Anzeige
AW: mit VBA yyyymmdd in dd.mm.jjjj umwandeln
09.07.2019 21:09:50
Werner
Hallo Daniel,
Du hast mir sehr geholfen. Mit meinem Basis-Wissen hätte ich das nicht herausgefunden.
Mein Problem ist damit gelöst. Und jetzt schicke ich meinen Rechner in die Nachtruhe.
Gruß Werner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

yyyymmdd in dd.mm.jjjj umwandeln mit VBA


Schritt-für-Schritt-Anleitung

Um das Datum im Format yyyymmdd (z.B. 20190709) in dd.mm.jjjj (z.B. 09.07.2019) umzuformatieren, kannst Du den folgenden VBA-Code verwenden:

Dim DatumText As String
Dim DatumNeu As Date
DatumText = "20190709"
DatumNeu = DateSerial(Left(DatumText, 4), Mid(DatumText, 5, 2), Right(DatumText, 2))
Debug.Print Format(DatumNeu, "dd.mm.yyyy")

In diesem Beispiel wird DateSerial verwendet, um das Datum zu erstellen. Danach kannst Du mit Format das Datum in das gewünschte Format umwandeln.


Häufige Fehler und Lösungen

  1. Laufzeitfehler beim CDate: Wenn Du versuchst, einen String wie "20190709" direkt in ein Datum umzuwandeln, kann das zu einem Laufzeitfehler führen. Stelle sicher, dass Du den String vorher ins richtige Datumsformat umwandelst.

  2. Falsches Datumsformat: Wenn Du das Datumsformat nicht korrekt angibst, wie z.B. Format(DatumNeu, "yyyyddmm"), wird das Datum nicht wie gewünscht ausgegeben. Achte darauf, die richtige Reihenfolge zu verwenden: Format(DatumNeu, "dd.mm.yyyy").


Alternative Methoden

Du kannst auch die CDate-Funktion verwenden, um das Datum zu formatieren. Hier ist ein Beispiel:

folgeTag = CDate(Format(20190709, "0000-00-00")) + 1
Debug.Print Format(folgeTag, "dd.mm.yyyy")

Diese Methode ist besonders nützlich, wenn Du mit Datumswerten arbeiten möchtest, die in einem anderen Format vorliegen.


Praktische Beispiele

Hier sind einige praktische Beispiele, um das Datum in verschiedenen Formaten zu konvertieren:

  1. Von yyyymmdd zu dd.mm.jjjj:
Dim DatumText As String
DatumText = "20190709"
Debug.Print Format(CDate(Format(DatumText, "0000-00-00")), "dd.mm.yyyy")
  1. Von yyyymmdd zu jjjjmmtt:
Debug.Print Format(CDate(Format(DatumText, "0000-00-00")), "yyyymmdd")

Diese Beispiele zeigen, wie Du VBA verwenden kannst, um Daten in das gewünschte Format zu bringen.


Tipps für Profis

  • Nutze CLng um sicherzustellen, dass die Ergebnisse als Zahlen gespeichert werden, wenn Du das Datum als Zahl benötigst: CLng(Format(DatumNeu, "yyyymmdd")).
  • Achte darauf, dass die Datumswerte in der richtigen Zeitzone sind, um Fehler bei der Berechnung zu vermeiden.
  • Verwende DateAdd, wenn Du mehrere Tage zu einem Datum hinzufügen möchtest: DateAdd("d", 1, DatumNeu).

FAQ: Häufige Fragen

1. Wie kann ich das Datum in ein anderes Format ändern?
Du kannst das Datumsformat einfach im Format-Befehl anpassen, z.B. Format(DatumNeu, "mm.dd.yyyy").

2. Was ist der Unterschied zwischen CDate und DateSerial?
CDate wandelt einen String in ein Datumsformat um, während DateSerial ein Datum aus Jahr, Monat und Tag erstellt. Verwende DateSerial, wenn Du bereits die einzelnen Komponenten hast.

3. Wie kann ich das Datum in Access VBA formatieren?
Die Methoden sind ähnlich, aber Du solltest Format(Datum, "mm/dd/yyyy") verwenden, um das Datumsformat in Access anzupassen.

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