Excel 2010-Makro, um "F2" + "Enter" für den Zellenbereich zu erzwingen
hoffe jemand kann helfen!
Ich habe ein Excel 2010-Arbeitsblatt, in dem Makros eingerichtet sind, um Daten von anderen Blättern in ein bestimmtes Format auf einem anderen Blatt zu kopieren, damit sie mit anderen Prozessen verwendet werden können. Die Daten, die ich benötige, werden über OK kopiert, aber ich habe ein Problem mit der Formatierung von Zellbereichen, die Datums- oder Zeitwerte enthalten. Die Daten stammen aus einem Datenbankextrakt und alles ist im Textformat. Wenn ich das Datum in mein Arbeitsblatt kopiere (über VBA-Codeverfahren), wende ich das Format an, das wir benötigen"yyyy-mm-dd"
für termine und"hh:mm.ss.ss"
für die Zeit.
Es gibt nie eine feste Anzahl von Zeilen, mit denen wir arbeiten. Daher habe ich den VBA-Code so eingestellt, dass die Formatierung auf den Zellbereich angewendet wird. Beispiel:
AssDateLastRow = shAss.Range("C" & Rows.Count).End(xlUp).Row
shAss.Range("C4:C" & AssDateLastRow).NumberFormat = "yyyy-mm-dd"
Und das funktioniert soweit ok! Aus irgendeinem Grund haben nicht alle Zellen im Bereich das richtige Format, sie werden jedoch als angezeigt15/04/2014
nicht2014-04-15
. Wenn ich manuell gehe, wähle ich die Zelle aus und drücke dieF2 dannEINGEBEN Tasten das Format erscheint wie ich brauche. Dies geschieht zufällig durch den Bereich und es kann Tausende von Zeilen geben, so dass es nicht praktisch ist, das Arbeitsblatt manuell zu durchforstenF2+EINGEBEN auf jedem.
Ich habe die Hilfe im Internet durchgesehen und festgestellt, was meiner Meinung nach automatisch tun sollF2+EINGEBEN Bit mit VBA-Codierung, aber es funktioniert nicht und ich kann nicht verstehen, warum (ich bin Anfänger bei VBA!)
Der Code, den ich unten einfügen möchte, ist der Code, der bisher aus einer größeren Menge von Codezeilen extrahiert wurdedim
Aussagen usw. sind weiter oben in der tatsächlichen Kopie, aber dies sollte zeigen, wie ich dies bisher angegangen bin.
Dim shAss As Worksheet
Dim AssDateLastRow As Long
Dim c As Range
'enter method to format 'Date Craftperson Assigned' and 'Time Craftperson Assigned' in Assignments sheet
'column "C" and "D", to formats required by Archibus: date "yyyy-mm-dd", time "hh:mm.ss.ss"
AssDateLastRow = shAss.Range("C" & Rows.Count).End(xlUp).Row
shAss.Range("C4:C" & AssDateLastRow).NumberFormat = "yyyy-mm-dd"
'ensure format is applied by forcing F2 edit of cell
For Each c In shAss.Range("C4:C" & AssDateLastRow).Cells
c.Select
SendKeys "{F2}", True
SendKeys "{ENTER}", True
'Selection.NumberFormat = "yyyy-mm-dd"
Next
Wenn ich den Code ausführe, werden die Daten in meine Arbeitsblätter kopiert, aber Datum und Uhrzeit sind immer noch in einem gemischten Format. Der Versuch, das zu erzwingenF2+EINGEBEN über den VBA hat sich anscheinend nichts getan. Wieder wenn ein manuell es tut, arbeitet es okay.
Nachfolgend finden Sie ein Beispiel für Daten, die aus den Ergebnissen im Arbeitsblatt kopiert wurden
Work Request Code Date Assigned Time Assigned
92926 19/05/2014 14:30.00.00
92927 19/05/2014 15:00.00.00
92928 2014-05-19 15:15.00.00
92934 2014-05-19 14:00.00.00
92527 12/05/2014 07:30
92528 12/05/2014 08:00
92804 2014-05-12 16:15
92805 2014-05-12 16:20.00.00
Jede Hilfe wäre toll, danke Dan