VBA Excel Quicksort Problem

-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

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
 
Mit PasteSpecial wird die Zwischenablage benutzt, und die ist suuuuper langsam. Hast du mal folgendes probiert:

Code:
Range("D2:D4").Value(11) = Range("B2:B4").Value(11)

Range D2 bis D4 sind die Felder, die temporär von den Feldern B2 bis B4 befüllt werden. Mit value(11) nimmst du Werte + Formattierung von den Feldern B2 bis B4 mit.
 
Zurück