Geschwindigkeit unter VBA?



Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Geschwindigkeit unter VBA?
von: Stefan
Geschrieben am: 24.05.2002 - 08:17:51

Hi, ich warte gerade mal wieder auf eine Programmausführung und das ganze Ding ist UNERTRÄGLICH langsam. Was kann man tun?
Also - zunächst das Problem. Ich führe mit einem relativ grossen Datensatz umfangreiche Berechnungen durch, für welche ich auf Excel-Funktinoen und Auswahlmechanismen zurückgreife (z.B. Standardabweichungen, Median, realtive Ränge usw. berechnen und Selektion bestimmter Datensätze nach Kriterien über die Auto-Filter Methode). Das Ergebnis lasse ich jeweils in einer neuen Spalte ausgeben, auf die ich dann für die folgenden Berechnungen zugreife. Und das alles geht wahnsinnig langsam.
Welche Möglichkeiten gibt es, hier die Performance zu verbessern, oder ist das einfach so.
Besonders lang scheint er immer für die Selektion via Auto-Filter und Berechnung von Rängen u.a. (z.B. auch Summewenn usw.) zu brauchen. Bringt es was, alles nur intern (z.B. in einem array) berechnen zu lassen und das erst ganz zum Schluss wieder in eine Excel-Tabelle schreiben zu lassen? Diese Mglchkt. wäre mir allerdings nicht so angenehm, weil ich da nicht wirklich sehen kann, was mein Programm mit den Sachen macht (bin nicht so sicher im Programmieren).

Und noch eine letzte Frage. Wie kann ich erkennen, ob VBA abgestürzt ist, oder noch arbeitet (ausser einem Zähler in der Application-Statusbar?). Oder passiert es selten, dass VBA abschmiert?

Viele Grüsse und einen schönene Morgen wünscht,

Stefan


nach oben   nach unten

Re: Geschwindigkeit unter VBA?
von: Hajo
Geschrieben am: 24.05.2002 - 08:21:30

Hallo Stefan

eine Geschwindigkeitssteigerung bringt es schon, wenn Du auf Befehle wie select und ähnliches verzichtets.

Zu Fortschrittsanzeige schaue mal hier
369. API-Fortschrittsbalken
Hier der direkte Link zu Michael Schwimmer, resp. dem API-Fortschrittsbalken:
http://schwimmer.bei.t-online.de/sonderfunktionen.htm#Fortschrittsanzeige
Von Thomas Ramel


Gruß Hajo

nach oben   nach unten

Re: Geschwindigkeit unter VBA?
von: Michael Scheffler
Geschrieben am: 24.05.2002 - 08:47:47

Hallo,

also VBA ist nun einmal eine Interpretersprache, das dauert immer langsam. Dann sind interne Arrays, denen Du feste Typen und Grenzen gibst (falls Du die kennst), immer schneller.

Und außerdem solltest Du auf die Aktaliseirung des Bildschirms verzichten, wenn Du schon auf die Tabellen zugreifen willst. Das daueret erfahrungsgemäß am längsten.

Gruß

Micha


nach oben   nach unten

Re: Geschwindigkeit unter VBA?
von: Timo
Geschrieben am: 24.05.2002 - 08:50:03

Hallo Stefan,

helfen würde vermutlich, wenn du die Bildschirmaktualisierung für die Laufzeit des Makros deaktivierst. Dann siehst du allerdings auch nicht, was dein Makro grad macht...

Dazu musst du nur 2 Zeilen Quellcode ergänzen:
Application.Screenupdating = False 'Direkt nach der Variablendeklaration
Application.Screenupdating = True 'Am Ende des Makros

Hoffe, dir geholfen zu haben

Timo

nach oben   nach unten

Re: Geschwindigkeit unter VBA?
von: rainer
Geschrieben am: 24.05.2002 - 09:03:19

Hallo! Bei mir hat der Einbau von application.xlcalculation = false am Anfang des Makros und application.xlcalculation = true am Ende Wunder bewirkt. Das hängt jedoch davon ab, ob du per Makro Werte in Zellen schreibst und Formeln in Zellen drin hast. Excel würde in diesem Fall immer bei Zelländerungen zuerst rechnen bevor es weitergeht. Mit den zwei Zeilen wird nur einmal am Ende des Makros gerechnet
Gruß
Rainer

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Problem mit #NV"