Hallo Jürgen,
und ganz am Anfang des VBA-Codes die Zeile
Application.ScreenUpdatingeinfügen. Das verhindert, dass Du jeden einzelnen Schritt des Makros am Bildschirm siehst, da damit die Bildschirmaktualisierung ausgeschaltet wird.
Außerdem könntest Du noch mit der Zeile
Application.Calculation = xlCalculationManualden Berechnungsmodus deaktivieren. Das verhindert, dass bei jedem Einfügen Formeln uns. aktualisiert werden. Das kostet nämlich auch Zeit. Du musst dann allerdings am Ende Deines Makros diesen Berechnungsmodus aktivieren. Das machst Du mit der Zeile
Application.xlCalculationAutomaticund damit Formeln, die sich eventuell auf die kopierten Werte beziehen auch neu berechnet werden, was Sie ja durch das Deaktivieren des Berechnungsmodus nicht konnten, fügst DU am Ende noch die Zeile
Application.Calculateein. Damit werden alle geöffneten Arbeitsmappen einmal neu berechnet.
Anosnsten mache das, was @nighty vorgeschlagen hat, denn die Select-Methode kann komplett entfert werden. Deine Code würden dann wie folgt aussehen
'Ausschneiden und Einfügen
OWS1.Rows(lZeile1).Cut
oWS2.Rows(lZeile2).Paste
' Kopieren und Einfügen
oW1.Rows(lZeilen1).Copy
oWS2g.Rows(lZeilen2).PasteWie Du siehst, kürzer und es werden nicht jedesmal beim Kopiervorgang die Zellen markiert, die Du kopieren und in die D einfügen möchtest. Das kostet nämlich am meisten Zeit.
MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]