2016-04-16 2 views
2

Ich muss Daten konvertieren (bis zur letzten Zeile) in der Spalte "C" aus dem bestehenden Format 24/01/2016 bis 24.01.2016 Das Ergebnis muss sein im Datumsformat.konvertieren ein Datumsformat für über 500 Zeilen mit einem For Next Loop

Mein aktueller Code ist:

LastRow9 = ws5.Cells(Rows.Count, "C").End(xlUp).Row 
For X9 = 1 To LastRow9 
searchvalue = Cells(X9, "C").Value 
Answer = Split(searchvalue, "/") 
ws5.Cells(X9, "A").Value = Answer 
ws5.Cells(X9, "A").Value = Format(Answer, "dd.mm.yyyy") 
Next X9 

die Antwort i 30.12.1899 erhalten, ist ein wenig weg von der Markierung

+0

Ich bin mir nicht sicher, warum Sie die integrierten Funktionen von Excel nicht nutzen möchten? Antwort einfach als Datum übergeben? – serakfalcon

+0

Kurz und gut :) 'ws5.Range (" C1: C "& LastRow9) .NumberFormat =" dd.mm.yyyy "' –

Antwort

2

die Range.NumberFormat property Ändern Versuchen.

with ws5 
    .range(.cells(1, "C"), .Cells(Rows.Count, "C").End(xlUp)).NumberFormat = "dd.mm.yyyy" 
end with 
+0

++ Nizza :) Sie verpasst ein DOT vor 'Zeilen' –

+0

Ich verwende' .Rows .Count "innerhalb. Mit .Cells (1, 1) .CurrentRegion" so viel, dass ich dazu neige, 'Rows.Count' auf dem Arbeitsblatt zu verwenden, um die Dinge organisiert zu halten. Es kann nur einen Unterschied machen, wenn Sie eine Anwendungsinstanz haben, in der beide Arbeitsmappen xls und xlsx style gleichzeitig mit dem falschen aktiven Arbeitsblatt geöffnet sind und das ist ziemlich selten für mich. – Jeeped

+0

Es stimmt, dass es für dich selten ist, aber wir haben es oft ignoriert. Es kann die meiste Zeit funktionieren, aber wenn Sie diesen Code von XL2007 ausführen und WS5 ist ein Arbeitsblatt von XL2003 Arbeitsmappe (Kompatibilitätsmodus), dann werden Sie falsche Ergebnisse erhalten :) Siehe [THIS] (http://stackoverflow.com/questions/19985345/vba-excel-compability-mode # comment29753337_19985345) Frage zu dem möglichen Fehler, den Sie bekommen können. Daher rate ich immer, '.' (DOT) vor' Rows.Count' und 'Columns.Count' zu verwenden :). –