online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon snailhouse vom 10.09.2021, 20:07 Options

Lösung

Excel VBA: Ausschneiden, Kopieren, Einfügen - Cut,Copy,Paste

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


Antwort schreiben

Antwort 1 von nighty vom 12.09.2021, 21:49 Options

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

Antwort 2 von coros vom 13.09.2021, 07:31 OptionsLösung

Lösung
Hallo Jürgen,

und ganz am Anfang des VBA-Codes die Zeile

Application.ScreenUpdating
einfü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 = xlCalculationManual
den 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.xlCalculationAutomatic
und 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.Calculate
ein. 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
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 3 von nighty vom 13.09.2021, 09:54 Options

hi coros ^^

feine unterstuetzung :-))

gruss nighty

Antwort 4 von snailhouse vom 13.09.2021, 20:06 Options

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

Ähnliche Themen

Excel VBA: Workbook_BeforeSave
snailhouse  18.03.2008 - 56 Hits - 2 Antworten

Datumsprüfung in Excel mit VBA
dongel  25.03.2008 - 97 Hits - 4 Antworten

excel vba filter reset
majoplinka  23.03.2008 - 142 Hits - 1 Antwort

VBA/excel einfügen in varierende zellen
Kokosk  19.05.2009 - 626 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026