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

Antworten auf die Frage(11)

Ihre Antwort auf die Frage