Datumsformat

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Datumsformat
von: Roland
Geschrieben am: 26.06.2015 15:07:50

Hallo
habe ein Problem mit einem Datumsformat.
Im Zuge eines Updates per VBA weise ich die aktualisierten Start- und Endtermine jeweils einer Variablen zu und weise die Werte der Variablen den entsprechenden Zellen in meiner Datei zu.
Allerdings geschieht es desoefteren, dass hierbei Monat und Tag vertauscht werden und ich somit einen falschen Termineintrag habe.
Die jeweiligen Start- und Endtermine sollen als als dd-mmm-yy (26-Jun-15) angezeigt werden. In der mir zugesendeten Datei sind diese ebenso formatiert.
Allerdings sind deren Zellen Benutzerformatiert als B1dd-mmm-yy
Ich habe keine Ahnung was das B1 bedeuten soll. Ein Zellbezug kann das nicht sein, da Zelle B1 eine Ueberschrift einer Spalte ist.
Auch wenn ich die Zelle vor zuweisen des Wertes aus der entsprechenden Variablen wie folgt formatiere
Range("H" & OldCnt).Value = Format(New_Start, "dd - mmm - yyyy")
Range("H" & OldCnt).Value = New_Start
aendert das nichts.
Nur wenn der Tag groesser als 12 ist, also die maximale Zahl der vorhandenen Monate im Jahr ueberschreitet dann wird das Datum richtig uebernommen.
Habe schon alles moegliche ausprobiert und gegoogelt aber nichts gefunden.
Kann mir hier jemand helfen ????
Waere sehr wichtig eine schnelle Loesung zu finden da ich das Makro anfang der naechsten Woche anwenden muss.
Vielen Dank an Euch alle.
Roland

Bild

Betrifft: AW: Datumsformat
von: ChrisL
Geschrieben am: 26.06.2015 15:43:00
Hi Roland
Hört sich nach einem Problem mit den Regionen-/Länder-Einstellungen an. Englisches/Amerikanisches Format ist Monat-Tag-Jahr. Darum mal prüfen:

Sub t()
    MsgBox Application.International(xlDateOrder)
End Sub

Die Reihenfolge der Datumselemente:
0 = Monat-Tag-Jahr
1 = Tag-Monat-Jahr
2 = Jahr-Monat-Tag
Stellt sich für mich auf die Frage, was du unter "des öfteren" verstehst. Je nach Computer unterschiedlich?
cu
Chris

Bild

Betrifft: AW: Datumsformat
von: Roland
Geschrieben am: 26.06.2015 16:38:27
Hallo Chris,
danke fuer die schnelle Antwort.
Habe es gleich mal ausprobiert. Bei beiden Dateien, meiner und der des kunden, wird die Zahl 1 zurueckgegeben. Also fuer 1 = Tag-Monat-Jahr
Mit desoefteren meinte ich, dass dies nicht jedesmal geschieht wenn ich der Zelle den Wert der Variablen zuweise.
Habe dann aber gemerkt, dass das, so wie ich bereits geschrieben hatte:
"Nur wenn der Tag groesser als 12 ist, also die maximale Zahl der vorhandenen Monate im Jahr ueberschreitet dann wird das Datum richtig uebernommen."
auftritt.
Also wenn das Tagesdatum zwischen 1 u. 12 liegt, dann wird der Monat mit dem Tag vertauscht. Wenn das Tagesdatum groesser als 12 ist nicht, da de Monat ja niocht groesser als die Zahl 12 sein kann.
Es scheint demnach so zu sein, dass beim zuweisen des Wertes zu der Variablen oder beim Zuweisen der Variablen zu der Zelle die Tagesszahl mit der Monatszahl vertauscht wird, sofern die Tageszahl den Wert 12 noicht ueberschreitet.
Allerdings geschieht es auch waehrend eines Makrodurchlaufes, dass bei manchen Zellen, in denen das Datum geaendert wurde das Datum als "dd/mm/yyyy" angezeigt wird obwohl ich die Zelle ja bereits so
Range("H" & OldCnt).Value = Format(New_Start, "dd - mmm - yyyy")
formatiert hatte.
Alles etwas suspekt fuer mich.
Hast Du noch eine Idee ???
Gruss
Roland

Bild

Betrifft: spontan keine weitere Idee...
von: ChrisL
Geschrieben am: 26.06.2015 17:41:29
Hi Roland
Da kann ich Dir nur noch meine Standard-Debugging-Methode empfehlen, nämlich die Datei resp. eine Kopie davon schrittweise auf das Problem zu reduzieren. D.h. schrittweise überflüssiges raus löschen und zwischendurch testen. Entweder findest du im Prozess die Ursache oder sonst hast du gleich eine Beispielmappe fürs Forum.
cu
Chris

Bild

Betrifft: AW: spontan keine weitere Idee...
von: Roland
Geschrieben am: 26.06.2015 18:31:41
Danke Chris,
habe das Problem geloest.
Habe Wert_1 u. Wert_11 as String deklariert und
Wert_2 u. Wert-22 as Datum
und dann folgendeermassen Werte zugewiesen:
Wert_1 = ActiveCell.Value~f~
~f~Wert_11 = Format(ActiveCell.Value, "dd-mmm-yy")~f~
~f~Wert_2 = ActiveCell.Value~f~
~f~wert_22 = Format(ActiveCell.Value, "dd-mmm-yy")~f~
und dann folgendermassen verschiedenen Zellen zugewiesen:
1. vertauscht Tag und Monat wenn Tag <= 12
~f~ActiveCell.Value = Wert_1~f~
~f~ActiveCell.Value = Format(Wert_1, "dd-mmm-yy")~f~
2. funtioniert einwandfrei
~f~ActiveCell.Value = Wert_11~f~
3. funktioniert einwandfrei
~f~ActiveCell.Value = Wert_2~f~
~f~ActiveCell.Value = Format(Wert_2, "dd-mmm-yy")~f~
4. funktioniert einwandfrei
~f~ActiveCell.Value = wert_22~f~
~f~ActiveCell.Value = Format(wert_22, "dd-mmm-yy")
Vielen Dank fuer Dein Bemuehen
gruss
Roland

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Datumsformat"