Es ist langsam weil:
Um Daten zu Lesen/Schreiben muss man generell keine Blätter aktivieren - aktivieren kostet Zeit
Du kopierst immer die gesamte Zeile - das beinhaltet verdammt viele Spalten!
Du ermittelst jedesmal erneut die letzte Zeile, obwohl du die schon aus dem vorherigen Schleifendurchgang ableiten/errechnen kannst.
Du kopierst jede Zeile einzeln - aufteilen in zu kopierende Blöcke, oder ein Zwischenspeichern in einem Array, würde es beschleunigen.
Verkettungen sind in VBA von Haus aus nicht effizient - schon allein deshalb ist statt Range("A" & zeilenIndex) die Schreibweise Cells(zeilenIndex, "A") schlüssiger. (auch wenn hier nicht besonders ins Gewicht fallend)
Grüße
PS: Verrübergehend Application.ScreenUpdating deaktivieren kann hilfreich sein.
PPS: Benennung und Verwendung der Index-Variable intErsteZ ist hochgradig irreführend beim Code lesen. Es handelt sich dabei eben nicht um die erste Z(eile) in jedem Schleifenduchgang.
|