Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1256to1260
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

Zeitbedarf Makro Excel2003 vs 2010

Zeitbedarf Makro Excel2003 vs 2010
Joachim
Hallo,
ich setze gerade Excel2003er Dateien nach 2010 um. Ein Makro leert einen Zellbereich, beschreibt ihn dann und verschiebt dann die Inhalte horizontal (zur besseren Lesbarkeit).
Dieses Makro braucht unter Excel2003 ca 1,5 Sekunden.
Der GLEICHE Code unter Excel2010 benötigt 25 (!!) Sekunden.
Es liegt am Verschieben. In 2003 flutscht es, in 2010 geht es Stück für Stück.
Hier ein Teil des Verschiebecode:
Range("I130").Value = Range("E130").Value
Range("E130").Value = ""
'verschieben der Ebene 1
For i = 131 To 400
If Range("F" & i) "" Then
Range("D" & i).Value = Range("F" & i).Value
Range("F" & i).Value = ""
End If
Next i
For i = 131 To 400
If Range("G" & i) "" Then
Range("E" & i).Value = Range("G" & i).Value
Range("G" & i).Value = ""
End If
Next i
For i = 131 To 400
If Range("H" & i) "" Then
Range("J" & i).Value = Range("H" & i).Value
Range("H" & i).Value = ""
End If
Next i
'verschieben der Ebene 2
For i = 131 To 400
If Range("I" & i) = "MV" Or Range("I" & i) = "UV" Then
Range("E" & i).Value = Range("I" & i).Value
Range("I" & i).Value = ""
End If
Next i
For i = 131 To 400
If Range("J" & i) "" And (Range("E" & i) = "MV" Or Range("E" & i) = "UV") Then
Range("F" & i).Value = Range("J" & i).Value
Range("J" & i).Value = ""
End If
Next i
Wie kann das möglich sein? Ist doch ein ganz einfacher Code.
Gruss
Joachim

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zeitbedarf Makro Excel2003 vs 2010
11.04.2012 13:44:07
Martin
Hallo Joachim,
Excel 2010 unterstützt wesentlich mehr Zeilen und Spalten als Excel 2003, auch der Funktionsumfang ist gestiegen. Darunter leidet natürlich die Performance (...Computer werden ja auch immer schneller).
Setze an den Anfang deines Codes folgende beiden Zeilen:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
An das Ende deines Codes schreibst du noch:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Miss mal die Zeit und poste sie hier im Forum.
Viele Grüße
Martin
Anzeige
AW: Zeitbedarf Makro Excel2003 vs 2010
11.04.2012 13:54:54
Joachim
Hallo Martin,
es lag am Application.Calculation. Wenn ich das auf manuell stelle, flutscht es (kleiner 1 Sek).
Lasse ich es auf Automatic, "denkt" Excel wieder.
Danke
Joachim
Vielleicht auch den Code noch ein wenig optimieren
11.04.2012 14:12:13
Martin
Hallo Joachim,
seit Excel 2007 wird sind fast alle Zellformeln "volatil" und werden nach jeder Zelländerung neu berechnet. Du solltest eventuell auch versuchen deinen Code etwas zu optimieren. Die ersten drei Schleifen könntest du auch so ersetzen (...denke ich):
    Range("D131:D400") = Range("F131:F400")
Range("F131:F400").Clear
Range("E131:E400") = Range("G131:G400")
Range("G131:G400").Clear
Range("J131:J400") = Range("H131:H400")
Range("H131:H400").Clear
Viele Grüße
Martin
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige