10k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von snailhouse Mitglied (179 Punkte)
Hallo zusammen,

ich muss in einer relativ großen Datei komplette Zeilen kopieren und wieder einfügen bzw. ausschneiden und wieder einfügen.
Die übliche Methode, die ich verwende (s.u.) funktioniert zwar, dauert aber für meinen Geschmack relativ lange. :-)
Gibt es vielleicht auch eine schnellere Variante??

' Ausschneiden und Einfügen
OWS1.Select
OWS1.Rows(lZeile1).Cut
oWS2.Select
oWS2.Rows(lZeile2).Select
oWS2.Paste

' Kopieren und Einfügen
oW1.Select
oW1.Rows(lZeilen1).Copy
oWS2g.Select
oWS2.Rows(lZeilen2).Select
oWS2.Paste


Für Eure Hilfe im voraus vielen Dank !

Jürgen

4 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi juergen ^^

als erstes die selectionen verbannen

wenn es viele daten sind werden sie ja nach kreterien ausgewaehlt

wie erfolgt dort die suche ?

diese koennte in einem array erfolgen

gruss nighty
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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).Paste
Wie 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]
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi coros ^^

feine unterstuetzung :-))

gruss nighty
0 Punkte
Beantwortet von snailhouse Mitglied (179 Punkte)
Hallo Ihr zwei,

vielen Dank für Eure Hilfe.

Bildschirmaktualisierung und Berechnung hatte ich bereits aus,
die Kurzform für's Kopieren ist aber "Gold wert" :-),

vielen Dank!

Gruß
Jürgen
...