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

Forumthread: VBA Problem mit Format(Date)

VBA Problem mit Format(Date)
17.03.2008 21:07:45
abaSisa
Hallo,
beschäftige mich seit einiger Zeit etwasmit VBA und dabei haben mir die Beiträge dieses Forums immer wieder geholfen...
Leider habe ich jetzt ein Problem, für dessen Lösung ich Eure Hilfe benötige:
Ich vba'le gerade an einem Workbook herum, in dem auf eingien Sheets Datumsangaben zu machen sind, diese ziehe ich dann für einen Vergleich heran. Dafür reicht mir ja ein Format.
Die Datumsangabe soll in der Form: März 08 in einer zelle ausgegeben werden. Das funktioniert ja über: Cells(i,j) = Format(Date, "mmmm yy") (sollte es zumindest)
Im März ist das auch kein Problem. In der Zelle erscheint das Datum im "Standard" - Format.
Im April bekomme ich aber auf einmal 08. Apr und im als Format wird dann das benutzerdefinierte "TT. MMM" angezeigt, obwohl es in die Zelle mit obigem Format geschrieben werden sollte...
Hier dann auch der Code (habe das Problem mal separiert und als Private Sub verfasst):

Private Sub CommandButton1_Click()
Dim Bereich As Range
Dim AktDatum, TestDatum, AktMonat, AktJahr As String
Dim ActMonth1 As Integer
i = Cells(1, 10)
Cells(i, 1) = Format(Date, "mmmm yy")
Cells(1, 10) = i + 1
Cells(i, 2) = Format(CDate(DateSerial(Year(Date), Month(Date) + 0, 1)), "mmmm yy")
AktJahr = Format(CDate(DateSerial(Year(Date), 1, 1)), "yy")
AktMonat = Format(CDate(DateSerial(Year(Date), Month(Date) + 1, 1)), "mmmm")
Cells(i, 3) = AktMonat & " " & AktJahr
AktDatum = Format(CDate(DateSerial(Year(Date), Month(Date) + 1, 1)), "mmmm yy")
Cells(i, 4) = AktDatum
Set Bereich = ActiveSheet.Columns(3).Find(AktDatum)
ActMonth1 = Bereich.Row
Cells(i, 5) = ActMonth1
End Sub


Das Problem zieht sich weiter durch das ganze Jahr. es gibt Monate, in denen ich den richtigen Ausdruck erhalte und es gibt Monate, da bekomme ich wieder den falschen Ausdruck (April, Januar, Februar, September).
Woran liegt das und wie kann ich es programmieren?
thx
abaSisa

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Problem mit Format(Date)
17.03.2008 21:21:00
Tino
Hallo,
eine Möglichkeit, passe das Format der Zelle an.
Beispiel:
Cells(i, 3).NumberFormat = "mmmm yy"
Gruß
Tino

AW: VBA Problem mit Format(Date)
17.03.2008 22:43:00
abaSisa
Hi,
Danke, das klappt zwar, nur bringt es mich leider nicht weiter...
Worauf es mir ankommt ist die Find() - Funktion. Bei einem Monatswechsel soll halt eine gewisse Zelle angesteuert werden. Wie gesagt, im März funzt des auch, da das Format richtig ausgegeben wird, dann wird das "AktDatum" auch gefunden.
Ich brauche entweder eine Erklärung, warum Excel bzw VBA so einen Stuß macht (damit ich es umgehen kann) oder eine plausible Lösung...
gruß
abaSisa

Anzeige
AW: VBA Problem mit Format(Date)
18.03.2008 00:19:00
Tino
Hallo,
an der Linksbündigkeit beim Monat März, kann man erkennen dass Excel dies als
Text Interpretiert,
im April erkennt er ein Datum und stellt entsprechend dass Datumsformat ein.(keine Ahnung warum)
Abhilfe, in den entsprechenden Zelle das Textformat einstellen.
Gruß
Tino

Anzeige
AW: VBA Problem mit Format(Date)
18.03.2008 09:08:01
abaSisa
Danke, dieser Weg bringt mich aber lieder auch nicht weiter.
Worauf es mir bei der Programmierung ankommt ist die Find-funktion und die funzt dann leider auch nicht (zumindest, wie jetzt auch, nicht in jedem Monat)...
Über das NumberFormat bekomme ich zwar den richtigen Ausdruck dargestellt. Die zelle ist jedoch mit einem Datum (TT.MM.JJJJ) belegt, womit die Find-funktion nicht funktioniert, da im VBA selber interesaanterweise alles richtig behandelt wird. Sprich, die Formate sind alle in "mmmm yy" und wenn ich den spaß in ein Label (Steuerelement) schreibe, dann steht dort auch das richtige drin. Sobald ich aber einer Zelle den Wert aus
VBA zuweise, passiert der Mist, daß bei einigen monaten das richtige "mmmm yy" steht und bei anderen "TT. MMM", wobei der Tag = dem Jahr ist... und das versteh ich einfach nicht....
Das zerstört mir auch meinen Ansatz, daß ich ein .Find(AktDatum) benutzen kann...
gruß
abaSisa

Anzeige
AW: VBA Problem mit Format(Date)
18.03.2008 09:16:00
abaSisa
Hallo nochmal
ich habe jetzt folgendes ausprobiert:
In das Sheet eine TextBox (Steuerelement) und dann in den Eigenschaften bei 'Linked Cell' eine Zelle eingegeben, die erhält dann glüklicherweise den richtigen Eintrag "April 08", wenn ich den TextBox.Value in eine Zelle schreibe, passiert immernoch der bisherige Stuss.
Meine Frage lautet nun wie folgt: Kann ich über VBA bei dem OLEObject die Eigenschaft der LinkedCell definieren?
Bei der Makroaufzeichnung ging es nicht...
Danke für die Hilfe
abaSisa

Anzeige
AW: VBA Problem mit Format(Date)
18.03.2008 09:37:00
abaSisa
Hallo,
ich schon wieder...
habe jetzt folgendes gemacht: statt "mmmm yy" lasse ich mir jetzt "mm. yyyy" ausgeben:

Private Sub CommandButton2_Click()
Dim Bereich As Range
Dim AktDatum, TestDatum, AktMonat, AktJahr As String
Dim ActMonth1 As Integer
i = Cells(1, 10)
Cells(i, 1).CurrentRegion.NumberFormat = "General"
Cells(i, 1) = Format(Date, "mm. yyyy")
Cells(i, 2) = Format(CDate(DateSerial(Year(Date), Month(Date) + 1, 1)), "mm. yyyy")
AktJahr = Format(CDate(DateSerial(Year(Date), 1, 1)), "yyyy")
AktMonat = Format(CDate(DateSerial(1, Month(Date) + 1, 1)), "mm.")
TestDatum = AktMonat & " " & AktJahr
Cells(i, 3) = TestDatum
AktDatum = Format(CDate(DateSerial(Year(Date), Month(Date) + 1, 1)), "mm. yyyy")
Cells(i, 4) = AktDatum
Set Bereich = ActiveSheet.Columns(3).Find(AktDatum)
ActMonth1 = Bereich.Row
Cells(i, 5) = ActMonth1
Cells(1, 10) = i + 1
End Sub


Auf einmal kann Excel mir den Spaß als Text anerkennen. Das ist zwar nur notdürftig, aber besser als gar nix...
Nochmal vielen Dank für die Hilfe
abaSisa

Anzeige
AW: VBA Problem mit Format(Date)
18.03.2008 11:06:00
Uwe
Hi,
nur ein Tip, mal abgesehen von Deinem Makro:
Ich kenne das Problem mit den Monaten, die erkannt oder nicht erkannt werden, wenn ich englische Datumsangaben importiere. Excel erkennt 01-Jan-2008. Aber NICHT 01-Mar-2008, weil es im Deutschen 01-Mrz-2008 heißt usw (z.B Dec / Dez).
Vielleicht ist ja da bei Dir "der Hund begraben".
Gruß
Uwe
(:o)

Anzeige
AW: VBA Problem mit Format(Date)
18.03.2008 11:46:00
Tino
Hallo,
im März funzt des auch, da das Format richtig ausgegeben wird
Wie gesagt mach in den Zellen das Textformat.
Gruß
Tino
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Datumsformatierung und Probleme mit Format(Date)


Schritt-für-Schritt-Anleitung

Um in VBA ein Datum im Format "MMMM YY" auszugeben, kannst du folgendes Beispiel verwenden. Achte darauf, dass du die korrekte Zelle und das Format angibst:

Private Sub CommandButton1_Click()
    Dim i As Integer
    i = Cells(1, 10) ' Die Zeile, in die das Datum geschrieben wird
    Cells(i, 1) = Format(Date, "mmmm yy") ' Aktuelles Datum formatieren
End Sub

Zusätzlich kannst du das Zellformat anpassen, um sicherzustellen, dass Excel das Datum im gewünschten Format interpretiert:

Cells(i, 1).NumberFormat = "mmmm yy"

Häufige Fehler und Lösungen

  1. Falsches Datumsformat: Wenn du im April das Format "TT. MMM" erhältst, liegt das oft an der Zellformatierung. Stelle sicher, dass du das Format der Zelle explizit auf Text oder "mmmm yy" setzt.

  2. Find-Funktion funktioniert nicht: Wenn die .Find()-Funktion nicht wie erwartet funktioniert, kann das an unterschiedlichen Datentypen liegen. Achte darauf, dass sowohl die gesuchte als auch die gespeicherte Variable im gleichen Datentyp vorliegen. Verwende gegebenenfalls CDate() oder Format() für die Umwandlung.

  3. Monatswechsel: Bei einem Wechsel des Monats kann es sein, dass Excel die Daten unterschiedlich interpretiert. Überprüfe die System- und Programmumgebung hinsichtlich der Spracheinstellungen.


Alternative Methoden

Falls das direkte Formatieren mit Format(Date, "mmmm yy") nicht die gewünschten Ergebnisse liefert, probiere diese Alternativen:

  • TextBox verwenden: Setze eine TextBox ein, um das Datum im gewünschten Format darzustellen. Dies kann helfen, die Ausgabe als Text zu sichern.
TextBox1.Value = Format(Date, "mmmm yy")
  • Direktes Zuweisen: Wenn du das Datum als Text in die Zelle schreiben möchtest, verwende:
Cells(i, 1) = CStr(Format(Date, "mmmm yy"))

Praktische Beispiele

Hier sind einige Beispiele, wie du Datumsformate in Excel VBA erfolgreich umsetzen kannst:

Private Sub CommandButton2_Click()
    Dim AktDatum As String
    AktDatum = Format(Date, "mm. yyyy")
    Cells(1, 1) = AktDatum
    Cells(1, 1).NumberFormat = "General" ' Setze das Format auf General
End Sub

Dieses Skript gibt das Datum im "mm. yyyy"-Format aus und stellt sicher, dass die Zelle als "General" formatiert ist, um potenzielle Probleme zu vermeiden.


Tipps für Profis

  • Zellenformat prüfen: Achte immer darauf, dass das Zellenformat den richtigen Datentyp hat. Besonders beim Arbeiten mit Datumsangaben ist es wichtig, dass Excel diese korrekt interpretiert.

  • Debugging: Nutze die Debugging-Tools von VBA, um den Wert und den Datentyp der Variablen zu überprüfen. Dies kann dir helfen, Probleme frühzeitig zu identifizieren.

  • Spracheinstellungen: Wenn du international arbeitest, sei dir über die Spracheinstellungen von Excel und Windows bewusst, da diese die Interpretation von Datumsangaben beeinflussen können.


FAQ: Häufige Fragen

1. Warum wird das Datum nicht im gewünschten Format angezeigt?
Das kann an der Zellformatierung liegen. Stelle sicher, dass die Zelle das richtige Format hat, z.B. "mmmm yy".

2. Wie kann ich sicherstellen, dass die .Find()-Funktion funktioniert?
Überprüfe, ob die gesuchten und gespeicherten Werte denselben Datentyp haben. Verwende CDate() oder Format() zur Konvertierung.

3. Funktioniert das Beispiel in allen Excel-Versionen?
Ja, die gezeigten Methoden sollten in den meisten modernen Excel-Versionen funktionieren, solange du VBA verwenden kannst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige