2016-05-25 2 views
0

Die folgende Codezeile ändert nicht nur das Format des Datums, es ändert auch den Wert des Datums. Warum passiert das und wie kann ich es vermeiden?VBA Excel 2013 Format Funktion ändert Datum

Code:

rng.Cells(intStartRow, rng.Columns.Count + 1) = _ 
Format(rng.Cells(intStartRow, rng.Columns.Count + 1).Value, "mmm-yy") 

Wert von rng.Cells(intStartRow, rng.Columns.Count + 1).Value vor der Ausführung des Codes:

enter image description here

Wert von rng.Cells(intStartRow, rng.Columns.Count + 1).Value nach der Ausführung des Codes:

enter image description here

+0

Die 'Format'-Prozedur konvertiert das Datum in eine Zeichenfolge. Wenn Sie es in die Zelle zurückschreiben, wird es in ein Datum konvertiert, indem das Format erraten wird (was nicht richtig ist, da das Jahr nun zweistellig ist). Um es als eine Zeichenfolge zu behalten, könnten Sie ein Zitat vorstellen: 'Zellen (...). Value =" '"& Format (...)'. –

Antwort

2

Wenn Sie auf ein tatsächliches Datum konvertieren mögen und das angezeigte Format ändern, verwenden:

With rng.Cells(intStartRow, rng.Columns.Count + 1) 
    .Value = CDate(.Value) 
    .NumberFormat = "mmm-yy" 
End With 
1

Der Grund, warum es passiert ist, dass die aktuellen Informationen intern als Dezimalzahl gespeichert und mit dem Datumsformat angewandt angezeigt die Zelle. In Ihrem Code ändern Sie die Datumsinformation in eine Zeichenkette, da das Ergebnis der Funktion Format() immer eine Zeichenkette ist. Eine Lösung, um das Problem zu lösen, ist Supplyy von Rory