Excel-VBA: Daten anzeigen als text, obwohl Datumsformat eingestellt ist

Excel 2010 Pro.

Bin ich mit einer seltsamen Formatierung problem.

Es ist OK arbeitet in Amerika, aber nicht, nachdem ich den code ausführen in österreich.
In österreich ist, wird es ignoriert von Datum und Zeit Formatierung. Ich kann es nicht ändern, nach, dass, auch manuell.
Sehen, wie wenn ich versuchen, verschiedene Formate, die Probe an der Spitze ist nicht zu ändern?

Es ist wichtig für die Zelle mit dem Wert für das gesamte Datum und Uhrzeit, sondern auch, um die gewünschten Uhrzeit-und Datumsformate.

Aktualisiert 14Nov13: Das problem ist beschrieben, auf anderen websites mit der Idee, dass das Datum irgendwie erhält "stecken als text" und können nicht neu formatiert werden, um nichts anderes. Ein Vorschlag war, etwas zu tun, mathematischen, um die Zelle zu zwingen, es zurück zu nicht-text. (Idee: die Reichweite.value = cdate(range.Wert) + 0) ich schaute genau auf meine Zelle, in österreich und bemerkt, dass es zwei Leerzeichen zwischen Datum und Zeit wie 14.11.2013 15:22:19. In einem Fall entfernte ich einen der Räume, und schnappte es in das format, das ich wollte (14-NOV-13). Ich war jedoch nicht in der Lage, Sie zu wiederholen, und haben, um herauszufinden, wie etwas zu tun, programmatisch. Ich bin nicht sicher, dass die richtige Lösung noch. Es wird wahrscheinlich beinhalten Fahrradfahren durch alle Datums-Zellen nach dem einfügen ich meine variant-array, und irgendwie lösen.

BAD (österreich)

Excel-VBA: Daten anzeigen als text, obwohl Datumsformat eingestellt ist

GUT (Amerika)

Excel-VBA: Daten anzeigen als text, obwohl Datumsformat eingestellt ist

MEHR DETAIL:
In meiner Anwendung Schreibe ich ein Datum, um zwei Zellen über ein array, dann formatieren Sie Sie mit einem von zwei benutzerdefinierten Datums-Formate. Die Zelle die Formatierung ist korrekt, wenn ich es prüfen. Wenn ich mir das Arbeitsblatt in Amerika, ist es richtig wie:

  • A1 zeigt 01-DEC-13 ' Englisch
  • B2 zeigt 15:23

Dann kopiere ich die XLSM zu einem server in österreich, und öffnen Sie es. Es sieht richtig.

  • A1 zeigt 01-DEZ-13 ' deutschen
  • B1 zeigt 15:23

Dann Lauf ich meinen code schreibt die neuen Daten in diese Felder und Formate. Das vermasselt, was ich sehe, in österreich, aber nicht in Amerika.

  • A1 zeigt 01.12.2013 15:23 ' Richtigen Wert, Falsches format
  • B1 zeigt 01.12.2013 15:23 ' Richtigen Wert, Falsches format

Ich ausgetestet, bis ich den Abschnitt, der das problem verursacht hat, die ist, wenn ich Schreibe die Daten auf dem Arbeitsblatt aus einem array. Beim Debuggen kann ich sehen, dass ich beim kopieren der array in der alle Formatierungen verloren. Das ist OK.

Set Destination = myWS.Range("A" & lFirstRow)
Destination.Resize(UBound(arrIn, 1), UBound(arrIn, 2)) = arrIn

Dann Lauf ich eine routine, die formatiert die Gegend.

If not bFormatWorksheet(myWS) then err.Raise glHandled_Error

In dieser routine, ich versuche eine von zwei Möglichkeiten, um das problem zu beheben. Zuerst habe ich versucht das kopieren der von mir gewünschten Formate aus einer versteckten Vorlage.

myWS.Rows(lFirstRow & ":" & lLastRow).ClearFormats
wksTemplate.Rows(giHEADER_ROW + 1).Copy
myWS.Rows(lFirstRow & ":" & lLastRow).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                                                   SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

Auf meiner amerikanischen version auf, so ergibt sich korrekt formatierte Zellen. Zum Beispiel

  • A1.Wert = 12/5/2013 05:00:45
  • B1.Wert = 12/5/2013 05:00:45
  • A1 zeigt, 05-DEC-13 ' DD-MMM-YY Richtigen
  • B1 zeigt 05:00 ' im Format HH:MM Korrekt

Wieder, es sieht OK, wenn ich öffnen Sie das Dokument, in österreich, aber nicht, nachdem ich ausführen, update-code.

Nachdem ich den update code in österreich sehe ich dieses:

  • A1.Wert = 12/5/2013 05:00:45
  • B1.Wert = 12/5/2013 05:00:45
  • A1 zeigt = 12/5/2013 05:00:45
  • B1 zeigt = 12/5/2013 05:00:45

und wenn ich die Option NumberFormat...

  • ?Range("A1").NumberFormat
  • dd-mmm-yy
  • ?Range("B2").NumberFormat
  • hh:mm

und wenn ich mit der rechten klicken Sie auf jede Zelle zu überprüfen-format, das ich sehen...

  • A1 format TT-MMM-JJ ' Richtigen für Tag, Monat, Jahr
  • B1 format hh:mm " Richtig

Da das nicht funktionierte, ging ich in und explizit jedes mal neu formatiert Zelle in eine Schleife wie diese:

for i = lFirst to lLast
  myWS.Range("A" & i).numberformat = "DD-MMM-YY"
  myWSRange("B" & i).numberformat = "HH:MM"
next i

Diese nicht helfen.

Ideen?

Dank
Shari

  • Wie sind Sie mit dem Auffüllen arrIn
  • Ich bin mir ziemlich sicher, dass die Datum-Zeit-Formate setzen auf das system Locale Einstellung. Nicht österreicher verwenden in der Regel . statt / zu begrenzen Termine? Das könnte es erklären. Betrachten Sie das schreiben eines string-literal, wenn Sie wollen, zu erhalten-format, hat der user die Locale-Einstellung.
  • arrIn ist bevölkert von code. Ich lese in einem Datenbereich aus dem Arbeitsblatt. Dann habe ich es verändern, ändern, neu ordnen, und bauen meine endgültige Ergebnisse in einem neuen array. Dann Schreibe ich das array in mein Arbeitsblatt und formatieren Sie jede Zelle.
InformationsquelleAutor Shari W | 2013-11-07
Schreibe einen Kommentar