-Xe0n-
BIOS-Overclocker(in)
Hallo Jungs
eventuell sind ja ein paar VBA geeks unter euch
Und zwar habe ich Quicksort in VBA implementiert. Es werden in der A Spalte das Datum eingespeichert . In der jeweiligen Zeile von dem Datum stehen Messwerte.
Das sortieren und tauschen der Zellen nach Datum funktioniert einwandfrei. Das Problem ist, dass in der Excel Tabelle dann mit z.B. Schriftfarben oder Zellenfarben wichtige größen markiert werden. Wenn ich dann sortiere und diese Zellen sind betroffen, dann wird die Formatierung nicht übernommen.
Meine Vertauschung der einzelnen Zellen sind momentan so aus
Dabei sind i und j meine linke und rechte Grenzen. vTemp ist einfach eine Variabel zum Zwischenspeichern.
Nun habe ich den oben genannten Quellcode durch folgenden ersetzt.
Die Zeile 210 ist nun als Zwischenspeicher gedacht. Das ganze funktioniert soweit auch nur eben seeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeehr langsam. Das reine Zahlen tauschen ist deutlich schneller.
Hat jemand eine Idee wie ich die Formatierung mitnehmen kann, ohne perfomance Verluste? Wenn ich das nämlich über PasteSpecial mache dauert eine 3 sek Sortierung locker 1minute...
Liebe Grüße
eventuell sind ja ein paar VBA geeks unter euch
Und zwar habe ich Quicksort in VBA implementiert. Es werden in der A Spalte das Datum eingespeichert . In der jeweiligen Zeile von dem Datum stehen Messwerte.
Das sortieren und tauschen der Zellen nach Datum funktioniert einwandfrei. Das Problem ist, dass in der Excel Tabelle dann mit z.B. Schriftfarben oder Zellenfarben wichtige größen markiert werden. Wenn ich dann sortiere und diese Zellen sind betroffen, dann wird die Formatierung nicht übernommen.
Meine Vertauschung der einzelnen Zellen sind momentan so aus
Code:
For m = 1 To Anzahlmesswerte
vTemp = Cells(j, m)
Cells(j, m) = Cells(i, m)
Cells(i, m) = vTemp
Next
Dabei sind i und j meine linke und rechte Grenzen. vTemp ist einfach eine Variabel zum Zwischenspeichern.
Nun habe ich den oben genannten Quellcode durch folgenden ersetzt.
Code:
Range(Cells(i, 1), Cells(i, Anzahlmesswerte)).Copy
Range(Cells(210, 1), Cells(210, Anzahlmesswerte)).PasteSpecial Paste:=xlPasteAll
Range(Cells(j, 1), Cells(j, Anzahlmesswerte)).Copy
Range(Cells(i, 1), Cells(i, Anzahlmesswerte)).PasteSpecial Paste:=xlPasteAll
Range(Cells(210, 1), Cells(210, Anzahlmesswerte)).Copy
Range(Cells(j, 1), Cells(j, Anzahlmesswerte)).PasteSpecial Paste:=xlPasteAll
Range(Cells(210, 1), Cells(210, Anzahlmesswerte)).Delete
Die Zeile 210 ist nun als Zwischenspeicher gedacht. Das ganze funktioniert soweit auch nur eben seeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeehr langsam. Das reine Zahlen tauschen ist deutlich schneller.
Hat jemand eine Idee wie ich die Formatierung mitnehmen kann, ohne perfomance Verluste? Wenn ich das nämlich über PasteSpecial mache dauert eine 3 sek Sortierung locker 1minute...
Liebe Grüße