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

Forumthread: Formatierung von Datumswerten

Formatierung von Datumswerten
Datumswerten
Hallo,
ich habe eine Frage zur Formatierung von Datumswerten.
Was ist wichtiger/besser zur Vermeidung von Fehlern: Die Variable selbst zu formatieren, oder die Zelle, in der die Variable geschrieben wird, zu formatieren?
Public qu As Date
-------------------------------------------------
Sub aktualisieren()
Dim akt_dat As Date
akt_dat = Date
'Formatierung der Variablen "akt_dat"
akt_dat = Format(akt_dat, "dd.mm.yy")
'Formatierung der Zelle "j2"
ActiveSheet.Range("j2").NumberFormat = "dd.mm.yy"
ActiveSheet.Range("j2") = akt_dat
qu = Date
'Formatierung der Variablen "qu"
qu = Format(qu, "q")
'Formatierung der Zelle "j4"
ActiveSheet.Range("j4").NumberFormat = "General"
ActiveSheet.Range("j4") = qu
End Sub
In qu (als Date deklariert) wird das Quartal (z.B. "1") gespeichert - muß man qu nun als Date oder integer deklarieren?
Vielen Dank für Ihre Hilfe.
MfG
kwon
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Formatierung von Datumswerten
13.03.2012 15:22:03
Datumswerten
Hallo,
ich würde qu als Long deklarieren.
Zum einen übergibst du an die Variable ein Datum und ein Datum (ohne Uhrzeit) ist
eine Ganzzahl &gt 32767 und somit fällt Integer schon mal aus.
Dann schreibst Du mit qu nur eine Zahl kein Datum in die Zelle J4,
was wiederrum für Long und nicht für Date spricht.
Gruß Tino
Anzeige
AW: Formatierung von Datumswerten
13.03.2012 15:25:44
Datumswerten
Hi kwon,
Ich würde dir vorschlagen die Variable selbst immer im korrekten Format zu formatieren; es sollte also ausreichen, wenn du es so formatierst:
Sub aktualisieren()
Dim akt_dat As Date
akt_dat = Date
'Formatierung der Variablen "akt_dat"
akt_dat = Format(akt_dat, "dd.mm.yy")
'Formatierung der Zelle "j2"
'ActiveSheet.Range("j2").NumberFormat = "dd.mm.yy"
ActiveSheet.Range("j2") = akt_dat
qu = Date
'Formatierung der Variablen "qu"
qu = Format(qu, "q")
'Formatierung der Zelle "j4"
'ActiveSheet.Range("j4").NumberFormat = "General"
ActiveSheet.Range("j4") = qu
End Sub
qu ist ja als Datum deklariert; das ist schon richtig, sonst würde ja der Befehl

qu = Format(qu, "q")
nicht mehr funktionieren. Es sei denn du möchtest das dargestellte Ergebnis (in diesem Fall 1) als integer speichern, dann kannst du es so machen:
Dim qu2 As Integer
qu = Date
'Formatierung der Variablen "qu2"
qu2 = Format(qu, "q")
ActiveSheet.Range("j4") = qu2
Gruß Jonatan
Anzeige
Wert und Format
14.03.2012 07:28:43
Erich
Hi,
da geht IMHO begrifflich etwas durcheinander.
"Variable selbst zu formatieren" geht nicht.
Eine Variable hat einen Typ, der wird beim Deklarieren festgelegt.
Und eine Variable hat einen Wert. Der wird zugewiesen.
Eine Variable hat aber kein Format.
Eine Zelle im Tabellenblatt hingegen hat - neben vielen anderen Eigenschaften - sowohl Wert als auch Zahlenformat.
Zu deinem Code:
Mit "akt_dat = Date" wird akt_dat die Zahl 40982 (das ist der 14.3.2012) zugewiesen. Ok.
Mit "Format(akt_dat, "dd.mm.yy")" wird aus der Zahl 40982 ein String erzeugt: "14.03.12". Ok, kann man.
Mit "akt_dat = Format(akt_dat, "dd.mm.yy")" wird dieser String dann wieder der Variablen akt_dat zugewiesen.
Eigentlich ist es gar nicht möglich, einer einer Date-Variablen einen String zuzuweisen.
Aber VBA ist tolerant und korrigiert das für uns, indem es den String in ein Date umwandelt (so das denn geht).
Das Ergebnis der Umwandlung ist: die Zahl 40982. Das hätten wir VBA leicht ersparen können...
Also: Ein Datum ist eine Zahl. Die Zahl ist der Wert der Date-Variablen.
Wie ein Datum in einer Zelle dargestellt wird, hängt nur vom Zahlenformat der Zelle ab.
Zu "In qu (als Date deklariert) wird das Quartal (z.B. "1")"
Warum willst du eine Variable, in der du das Quartal speichern willst, als Date deklarieren?
Ein Quartal ist doch kein Datum.
Wie du qu deklarieren solltest, hängt davon ab, wie du es brauchst. Es könnte auch ein String sein.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Formatierung von Datumswerten in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Variablen deklarieren: Beginne mit der Deklaration deiner Variablen. Wenn du ein Datum speichern möchtest, nutze den Typ Date für Datumswerte und Long oder Integer für Quartale.

    Dim akt_dat As Date
    Dim qu As Long
  2. Datum zuweisen: Weise der Datumsvariablen das aktuelle Datum zu:

    akt_dat = Date
  3. Formatierung der Variablen: Du kannst die Variable mit der Format-Funktion formatieren, aber sei vorsichtig, dass du den richtigen Datentyp verwendest.

    akt_dat = Format(akt_dat, "dd.mm.yy")
  4. Formatierung der Zelle: Um die Zelle im richtigen Format darzustellen, setze das NumberFormat.

    ActiveSheet.Range("j2").NumberFormat = "dd.mm.yy"
    ActiveSheet.Range("j2") = akt_dat
  5. Quartal berechnen: Um das Quartal zu speichern, kannst du die Format-Funktion ebenfalls verwenden:

    qu = Format(Date, "q")
  6. Zelle für Quartal setzen: Zelle für das Quartal formatieren:

    ActiveSheet.Range("j4").Value = qu

Häufige Fehler und Lösungen

  • Falsche Datentypen: Wenn du versuchst, einen String einer Date-Variablen zuzuweisen, kann dies zu einem Fehler führen. Achte darauf, dass du die richtigen Datentypen verwendest.

  • Zellenformatierung nicht sichtbar: Wenn du das NumberFormat nicht korrekt setzt, wird das Datum nicht richtig angezeigt. Prüfe deinen Code auf die NumberFormat-Anweisung.

  • Quartal als Date deklariert: Wenn du das Quartal speichern möchtest, nutze Long oder Integer, da ein Quartal keine Datumseinheit ist.


Alternative Methoden

  • Direkte Formatierung: Anstatt die Variable zu formatieren, kannst du auch direkt die Zelle formatieren, ohne die Variable in ein bestimmtes Format zu bringen:

    ActiveSheet.Range("j2") = Date
    ActiveSheet.Range("j2").NumberFormat = "dd.mm.yy"
  • Verwendung von WorksheetFunction: Du kannst auch Excel-Funktionen aus VBA verwenden, um komplexere Datumsoperationen durchzuführen.


Praktische Beispiele

Hier ist ein vollständiges Beispiel, das zeigt, wie du ein Datum formatieren und in eine Zelle schreiben kannst:

Sub aktualisieren()
    Dim akt_dat As Date
    Dim qu As Long

    akt_dat = Date
    ActiveSheet.Range("j2").NumberFormat = "dd.mm.yy"
    ActiveSheet.Range("j2") = akt_dat

    qu = Format(akt_dat, "q")
    ActiveSheet.Range("j4") = qu
End Sub

In diesem Beispiel wird das aktuelle Datum in die Zelle J2 geschrieben und das Quartal in J4.


Tipps für Profis

  • Verwende Option Explicit: Setze am Anfang jedes Moduls Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies reduziert Fehler.

  • Debugging: Nutze die Debug.Print-Anweisung, um Werte während der Ausführung zu überprüfen.

  • Zellenformatierung anpassen: Experimentiere mit verschiedenen NumberFormat-Einstellungen, um das gewünschte Datumsformat zu erhalten.


FAQ: Häufige Fragen

1. Wie kann ich ein Datum in das amerikanische Format ändern?
Du kannst das NumberFormat wie folgt anpassen:

ActiveSheet.Range("j2").NumberFormat = "mm/dd/yyyy"

2. Was ist der Unterschied zwischen Date und String?
Date speichert ein Datum und ermöglicht Datumsoperationen, während String nur Text speichert und keine Datumseigenschaften hat.

3. Wie kann ich mehrere Zellen gleichzeitig formatieren?
Du kannst den Bereich angeben:

ActiveSheet.Range("j2:j10").NumberFormat = "dd.mm.yy"

4. Ist es notwendig, die Zelle zu formatieren, wenn ich die Variable formatiere?
Es ist nicht notwendig, aber empfohlen, da das Zellenformat das Aussehen beeinflusst, wenn das Datum angezeigt wird.

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