Excel 2010 makro Kraft "F2"+"Enter" auf Zellbereich
hoffe mir kann jemand helfen!
Ich habe eine Excel 2010-Arbeitsblatt, das Makros einrichten, um das kopieren von Daten aus anderen Arbeitsblättern in einem bestimmten format auf einem anderen Blatt, für die Verwendung mit anderen Prozessen. Die Daten, die ich brauche Kopien über ok, aber ich habe ein Problem mit der Formatierung von Zellbereichen, die Datums-oder Zeitwerte. Die Daten stammen aus einer Datenbank extrahieren und alles ist in text-format. In meinem Arbeitsblatt, wenn ich das Datum kopiert (über VBA-code-Verfahren), die ich anwenden das format, die wir benötigen, die "yyyy-mm-dd"
für Termine und "hh:mm.ss.ss"
für die Zeiten.
Gibt es nie eine Feste Anzahl von Zeilen arbeiten wir mit also ich habe den vba-code die Formatierung auf den Zellbereich zum Beispiel:
AssDateLastRow = shAss.Range("C" & Rows.Count).End(xlUp).Row
shAss.Range("C4:C" & AssDateLastRow).NumberFormat = "yyyy-mm-dd"
Und das funktioniert ok, so weit! Aus irgendeinem Grund, obwohl nicht alle Zellen im Bereich die richtige Formatierung übernommen, Sie erscheinen als 15/04/2014
nicht 2014-04-15
. Wenn ich dann manuell wählen Sie die Zelle und drücken Sie die F2, dann ENTER - Tasten das format angezeigt wie ich Sie brauche. Dies geschieht nach dem Zufallsprinzip durch den Bereich und es könnte sein, Tausende von Zeilen, so ist es nicht praktikabel, Schleppnetz wenn das Arbeitsblatt manuell betätigen von F2+ENTER für jede.
Ist, habe ich mich über die Hilfe im internet und fand, was ich glauben sollte automatisch die F2+ENTER bisschen mit vba-coding, aber es funktioniert nicht und ich kann nicht sehen, warum (ich bin Anfänger in VBA!)
Den code ein fügen Sie in die unten ist, was ich habe, so weit, seinen extrahiert aus einer größeren Anzahl von code-Zeilen, also die dim
Aussagen etc sind weiter oben in den eigentlichen kopieren, aber dies sollte zeigen, wie ich angegangen habe diesen so weit.
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ühren, werden die Daten kopiert auf meine Arbeitsblätter, aber auch die Termine und Zeiten sind noch in einem gemischten format. Der Versuch zu zwingen, die F2+ENTER per VBA nicht zu haben schien nichts gemacht. Wieder, wenn ein manuell tun es, es funktioniert ok.
Unten ist ein Beispiel der Daten, die kopiert die Ergebnisse in das Arbeitsblatt
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
- Ok, was die Daten/zahlen Aussehen, bevor Sie code ausführen? Ich meine, was tut die
date assigned
19/05/2014
und2014-05-19
Aussehen, bevor Sie Sie ausführen BELIEBIGEN code auf es - Termine 19/05/2014 und-Zeiten 07:30
- Ich meine, was ist der zugrunde liegende Wert - und nicht, was angezeigt wird, aber was ist in den recordset? u kann versuchen
Range("C5").Value2
aber nicht sicher, ob dies funktionieren wird - Nicht sicher, was du meinst mit dem zugrunde liegenden Wert. Die Informationen kopiert werden, z.B. aus Tabelle1 zu Tabelle2 per VBA-code. auf die Blätter ein Datum eingegeben werden, wie dd/mm/yyyy und die Zelle formatieren von Datum-format von der gleichen. das format, das ich bin versucht, nach dem kopieren der Daten in die leeren Zellen auf Blatt 2
- Ok Super, also wo sind Sie vergeben und wie Sie die Qualifikation Ihrer aktiven Arbeitsblatt?
- Mit ThisWorkbook Set shWO = .Sheets("Arbeitsaufträge") 'Ändern wie nötig. Set shAss = .Sheets("Zuweisungen") 'Ändern wie nötig. Ende Mit
- Versuchen Sie manuell das ersetzen von "-" mit "-" und sehen, ob die den job machen, die Daten das richtige format. Es sollte funktionieren. Dann können Sie einfach tun, wie ein makro. Es ist schnell und es funktioniert. Ich benutze es die ganze Zeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwende ich dieses einfache makro anwenden F2 + Enter für das aktuell ausgewählte Bereich:
Ich denken kann von zwei Optionen, um Excel die Formatierung auf die Zellen in einem Schritt.
Die erste ist die Verwendung der Text in Spalten Funktionalität, auch wenn es nichts in der Spalte zu trennen.
Die zweite Möglichkeit ist, kopieren Sie den Wert 1, und fügen Sie Sie in die Zellen mit der Inhalte Einfügen - Multiplizieren option.
Obwohl beide Methoden sollten eine Aktualisierung erzwingen der Zelle formatieren, würde ich lean in Richtung der ersten option.
Dies ist incase einige Ihrer Daten sind als text gespeichert.
Kämpfte ich, um dieses zu erhalten, um zu arbeiten. Mein problem wurde nicht nur Daten, sondern auch Daten mit einem Apostroph davor. Was ich gehackt zusammen funktioniert großartig für mich. Es reinigt bis über 70.000 Zellen sehr schnell. Hoffe, es funktioniert für Sie:
(Sie den Bereich ändern und so an Ihre Bedürfnisse anpassen)
Dieser arbeitete für mich.
Es scheint seltsam, dass, würden Sie brauchen, um senden Sie die Tasten F2 + Enter. Was ist die Formatierung, bevor Sie das makro ausführen? Versuchen Sie die Formatierung der gesamten Spalte, die Art und Weise (es wirkt sich nicht auf den text).
Meine variation
Versuchen Sie F9 drücken oder " Datei-Option-Formeln-Arbeitsmappe Berechnung - automatische
Ich nur die Zelle rechts von der oberste Eintrag gleich eine Formel, multipliziert das problem Zelle mal 1. Das neue Zelle war eine richtige Zahl, so dass dann Doppel-Klick auf den Griff es nach unten die gesamte Spalte fest Ihnen allen!
Sendkeys sind nicht stabil. Der bessere Weg ist, zum speichern der text in die Zwischenablage und fügen Sie es.
Finden Sie hier Informationen zum speichern von Werten in die Zwischenablage
Ich habe es, Einfache
Wählen Sie alle Zellen, die Sie wollen zu treffen, F2, und Geben Sie und führen Sie dieses kurze makro:
Sub AutoF2Enter()
Auswahl.Wert = Auswahl.Wert
End Sub
Funktioniert auf Datum und zahlen)!
50.000 Zellen in einer Sekunde!