(C) 2009 - 2018 by Mourad Louha · Alle Rechte vorbehalten

VBA Performance in Excel 2010 – Teil 1

Um die VBA Performance bzw. Geschwindigkeit in Excel 2010 zu testen und mit Excel 2007 sowie Excel 2003 zu vergleichen, entwickle ich zur Zeit ein Tool, welches diese Testreihen durchführt und in einem Bericht ablegt. Momentan testet das Tool die Geschwindigkeit von verschachtelten Iterationen sowie das Einfügen von Zeichenobjekten in einer neuen Tabelle. In diesem ersten Teil einer Artikelreihe zu den VBA Tests mit Excel 2010 stelle ich die bisherigen Ergbnisse vor.

Excel 2010 VBA Performance

Im ersten Test, den ich durchgeführt habe, habe ich eine verschachtelte For-Schleife in allen drei Programmen ausgeführt und dabei die benötigte Zeit gemessen. Hierfür kommen übrigens Windows API Funktionen zum Einsatz, die genauere Messungen ermöglichen. Damit der Test ein wenig aussagekräftiger wird, kann der Test mehrfach hintereinander wiederholt werden. Im Bericht wird anschließend ein Mittelwert der einzelnen Ergebnisse gebildet.

An dieser Stelle ist jedoch anzumerken, dass meine Tests nur Richtwerte liefern können, es handelt sich hier nicht um Tests unter Laborbedingungen. Und diese Tests sind persönliche Tests, haben also keinerlei offiziellen Charakter. Auch sind die drei Office Versionen parallel auf demselben Rechner installiert, ob dies Auswirkungen auf die Ergebnisse hat, vermag ich nicht zu sagen. In folgener Abbildung nun ein Ergebnis zum ersten Test für die drei Anwendungen.

Excel 2010 VBA Performance

Sie sehen, alle drei Anwendungen bewegen sich im selben Bereich, hier ist Excel 2010 etwas langsamer als 2007 und dieses wiederum langsamer als 2003. Den Test habe ich einige Male wiederholt, die Abweichungen waren minimal. Wenn ich drei verschachtelte Schleifen mit 1000 Durchläufen ausführe, erhalte ich beispielhaft folgendes Ergebnis:

Excel 2010 VBA Performance

Insgesamt würde ich aus diesem Tests folgern, dass sich in Punkto Berechnungen über VBA nicht viel geändert hat. Folgend ein Auszug aus dem Quellcode zur Ausführung der Schleife.

Zunächst wird ein Timer gestartet, anschließend die Schleifen ausgeführt. Die Variablen u, v und w stellen die jeweiligen Obergrenzen dar. Gleichzeitig wird geprüft, ob einer der verschachtelten Schleifen ausgeführt werden soll. Die Variable r ist nur ein Dummy, der mit Werten gefüllt wird. Abschließend wird die Zeit gestoppt.

Der zweite Test, den ich durchgeführt habe, ist das Erzeugen von Autoformen – wie Rechtecke, Dreiecke oder Ellipsen – per VBA Code. Hier zeigen sich deutliche Unterschiede zwischen den Excel Versionen. Das Tool kennt hier verschiedene Einstellmöglichkeiten und Optionen, wie hier unten zu sehen:

Excel 2010 VBA Performance

Zunächst habe ich 1000 zufällig generierte Objekte in eine Tabelle einer neuen Arbeitsmappe eingefügt. Jedes erzeugte Objekt wird zudem mit einer zufällig generierten Hintergrundfarbe versehen. Die Tabelle wird nach jedem Schritt soweit nach unten gescrollt, dass das zuletzt eingefügte Objekt sichtbar bleibt. Folgende Abbildung visualisiert das Ergebnis dieses Tests:

Excel 2010 VBA Performance

Excel 2007 braucht insgesamt über 5 Minuten, um die 1.000 Objekte einzufügen! Excel 2010 und 2003 sind da schon wesentlich performanter, nicht mal ein Zehntel der Zeit wird benötigt. Excel 2010 erreicht hier fast die Geschwindigkeit von Excel 2003. Wenn man nun berücksichtigt, dass die Autoformen um einige Eigenschaften seit 2003 erweitert wurden, ist meines Erachtens die Performancesteigerung von Excel 2010 nicht nur zu 2007 sondern auch zu 2003 beachtlich.

Den gleichen Test habe ich weiteres Mal durchgeführt, hier aber die Bildschirmaktualisierung (ScreenUpdating) abgeschaltet. Folgende Abbildung zeigt mein Ergebnis:

Excel 2010 VBA Performance

Hier ist zwar Excel 2010 immer noch schneller als 2007, beide sind jedoch langsamer als 2003. Allerdings ist hier auch wieder zu berücksichtigen, dass die Objekteigenschaften erweitert wurden. Wenn nun beide vorangegangenen Tests betrachten, schließe ich daraus, dass an der Grafikengine von Excel 2010 erhebliche Verbesserungen implementiert wurden. Mal am Rande bemerkt, diese Tests verdeutlichen auch, dass das Abschalten der Bildschirmaktualisierung erheblich Geschwindigkeitsvorteile bringen kann. Besonder gut sichtbar ist das bei Excel 2007, wo der Wert von über 5 Minuten auf knapp über 4 Sekunden sinkt.

Abschließend noch der Hinweis, dass weitere Testroutinen für Formeln, Diagramme und Berechnungen in Arbeit sind. Die Ergebnisse werden wir in einem unserer nächsten Artikel veröffentlichen. Das Tool wird, sobald die weiteren Testszenarien implementiert sind, als Freeware freigegeben.

Mourad Louha

Über den Autor · Mourad Louha

Mourad arbeitet seit 2005 als selbständiger Softwareentwickler und Trainer und lebt in Aachen, gelegen am Dreiländereck Belgien, Deutschland und Niederlande. In seiner Freizeit engagiert er sich in Online Communities rund um Office, schreibt beim Excel Ticker Artikel zu Office & Co. und betreibt weitere Community Projekte in Zusammenarbeit mit Freunden und Partnern, wie das Forum zu Microsoft Office 365 und Office 2013, den Excel Soccer oder den Excel Formel Übersetzer. Für sein außergewöhnliches Engagement wurde er seit Januar 2011 jährlich von Microsoft als Microsoft Most Valuable Professional (MVP) ausgezeichnet.

 
Comments
Frank Eierdanz

Hallo Mourad,
spannender Test! Hast du das auch schon mit Excel 2013 getestet, gibt es da Unterschiede?
Danke & Gruß, Frank

Hallo Frank,

vielen Dank :-) Mit 2013 hab‘ ich’s (noch) aus Zeitmangel nicht getestet. Ich schätze (wirklich nur geschätzt) aber, dass es sich in einem ähnlichen Rahmen wie 2010 bewegen wird.

Gruß, Mourad

Hallo Mourad, ich würde gerne wissen, ob Sie inzwischen ein Programm entwickelt haben zu dieser Thematik, welches im Download (kostenfrei oder gebührenpflichtig) zur Verfügung steht? Danke Ihre Rückmeldung. Mfg, Karin Blum

Mourad Louha

Hallo Karin,

nein, habe ich nicht, da es zeitlich nicht möglich und dann leider untergegangen war. Haben Sie eine spezielle Frage zur Geschwindigkeit? Vielleicht kann ich auch so weiterhelfen.

Viele Grüße,
Mourad

Leave a Reply