Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1092to1096
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

PasteSpecial unglaublich langsam?

PasteSpecial unglaublich langsam?
knickebein
Hallo,
kann es sein, dass PasteSpecial unfassbar langsam ist?
Diese Prozedur läuft bei mir ca. 7 Sekunden:

Application.ScreenUpdating = False
Application.EnableEvents = False
vZeile = ActiveCell.Row
For Each vZelle In Rows(vZeile).SpecialCells(xlCellTypeFormulas)
vZelle.Copy
Cells(vZeile + 1, vZelle.Column).PasteSpecial Paste:=PasteFormulas
Next vZelle
Application.EnableEvents = True
Application.ScreenUpdating = True

Der fragliche Bereich (For Each ... In ...) enthält dabei lediglich 16 Formeln, es braucht also fast 0,5 Sejunden pro PasteSpecial-Aufruf. Wenn ich die PasteSpecial-Zeile auskommentiere läuft die Prozedur in Sekundenbruchteilen durch.
Danke und Gruß
knickebein
Übersehe ich da irgendetwas? Gibt es eine Alternative?

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: PasteSpecial unglaublich langsam?
10.08.2009 18:34:29
Harry
Hi,
Berechnung auf manuell einstellen.
mfg Harry
AW: PasteSpecial unglaublich langsam?
10.08.2009 18:35:10
Ramses
Hallo
Wenn das komplexe Formeln sind, ist das kein Wunder.
Nach jedem Einfügen der Formel muss diese wieder neu berechnet werden. Schalte auch die Berechnung aus, dann sollte es schneller gehen
Application.Calculation = xlManual
Application.Calculation = xlAutomatic
Gruss Rainer
AW: PasteSpecial unglaublich langsam?
10.08.2009 18:41:28
knickebein
Danke, euch beiden!
Zwar sind die betroffenen Formeln nicht komplex, aber Excel berechnet alle anderen Formeln auf dem Blatt (egal, ob sie von der Änderung betroffen sind, oder nicht) auch neu durch - und das sind einige, von denen viele auch komplex sind.
Hierbei handelt es sich um ein Verhalten, dass mich schon früher zu einer Frage veranlasste - ich hätte also drauf kommen können...
Gruß
knickebein
Berechnung deaktivieren
10.08.2009 18:42:00
NoNet
Hallo knickebein,
normalerweise dauert PasteSpecial nicht so lange, allerdings sollte man beachten, dass nach jedem Pastespecial-Vorgang das gesamte Blatt (oder sogar die gesamte Mapp(n)) neu berechnet werden. Und das kann je nach enthaltenen Funktionen recht lange dauern (vor allem bei MATRIX-Funktionen !).
Teste das Makro doch mal bei deaktivierter Berechnung :
Sub FormelKopieren()
Dim xlCalcMode
xlCalcMode = Application.Calculation 'aktuellen Modus speichern
Application.ScreenUpdating = False
Application.EnableEvents = False
vZeile = ActiveCell.Row
For Each vzelle In Rows(vZeile).SpecialCells(xlCellTypeFormulas)
vzelle.Copy
Cells(vZeile + 1, vzelle.Column).PasteSpecial Paste:=xlPasteFormulas
Next vzelle
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalcMode 'alten Modus wieder herstellen
ActiveSheet.Calculate
End Sub
Noch ein Hinweis : Zumindest in Excel 2003 heisst es übrigens xlPasteFormulas und nicht PasteFormulas - bitte überprüfe das nochmal in Deinem Code !
Gruß, NoNet
Anzeige
AW: PasteSpecial unglaublich langsam?
10.08.2009 18:43:52
Daniel
Hi
das hängt natürlich davon ab, welche Formeln da kopiert werden und welche Datenmengen bei diesen Formeln bearbeitet werden, da diese dann jedesmal neu berechnet werden.
das kann bei Komplexen Formeln wie Matrix-Formeln, ZählenWenn, SVerweis usw schon mal dauern.
wenn dann noch die Formeln volatil sind, dh immer neu berechnet werden, dann kanns zäh werden.
vielleicht hilfts was, für die Dauer des Kopierens Application.Calculation = xlCalculationManual zu setzen (hinterher wieder auf Automatic-Setzten nicht vergessen!)
oder Probier mal das hier:

with ActiveCell.EntireRow.SpecialCells(xlCellTypeFormulas)
.Offset(1,0).FormulaR1C1 = .FormulaR1C1
end with
das würde die Schleife umgehen und ist vielleicht schneller (hab ich nicht getestet, kann auch sein, daß es langsamer ist)
Gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige