Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Userform und Performance

Betrifft: Userform und Performance von: Martin
Geschrieben am: 02.11.2012 17:47:15

Hallo liebe VBA Profis,
bei einem meiner Makros tritt ein seltsames Problem auf, das ich bisher noch nicht beobachtet habe und auch durch intensives Suchen in Foren etc. nicht lösen konnte.

Ein ziemlich langer Algorithmus, der in VBA umgesetzt ist, bestimmt Einträge in diversen Spalten und Zeilen. Der Algorithmus funktioniert und ist auch, gemessen an bisherigen Maßstäben, performant.

Dennoch dauert die Berechnung ein paar Minuten weshalb ich eine modeless userform implementiert habe, die den Fortschritt der Berechnung mit verschiedenen Kennzahlen zusammenfasst. Da der Algorithmus unter anderem auf Werte zurückgreift, die auf dem Tabellenblatt während der Laufzeit berechnet werden, wird zwischendurch immer mal wieder Calculate aufgerufen, allerdings streng begrenzt auf die gerade relevanten Zellen.

Nun zum eigentlichen Phänomen:
1. Wenn ich das Makro starte rechnet es zunächst vergleichsweise langsam und zwar bis ich genau einmal ESC drücke (erst ein zweites Mal unterbricht die Berechnung). Nach dem Drücken rennt die Berechnung wie gewünscht äußerst schnell.
2. Wenn ich Excel den Fokus nehme und in ein andere Programm wechsle tritt der o.g. Effekt des langsamen Rechnens erneut auf. Beim erneuten Fokus auf Excel bleibt die Berechnung langsam bis ich erneut einmal ESC drücke - dann geht's wieder flott.

Ich habe leider keine Ideen mehr woher dieses komische Verhalten kommen soll und hoffe, dass der Ein oder Andere evtl. einen Ansatzpunkt liefern kann.
Ergänzend ist noch hinzuzufügen: Die Berechnungen sind robust; auch wenn ich es langsam laufen lasse kommt das selbe Ergebnis raus wie wenn ich einmal ESC gedrückt habe. Im Makro sind mehrere Schleifen integriert, im Wesentlichen For und eine Do While Schleife. Innerhalb der Schleifen werden einfache Berechnungen durchgeführt.

Herzlichen Dank und viele Grüße ans Forum
Martin

  

Betrifft: AW: Userform und Performance von: ransi
Geschrieben am: 02.11.2012 18:41:52

HAllo

Ich denke durch das hin- und herschalten änderst du den Berechnungsmodus und zwingst Excel in eine Neuberechnung der gesamten Application.
Das wäre dann die Bremse.

Aber ohne die Datei kann man da nur raten.

ransi


  

Betrifft: AW: Userform und Performance von: Martin
Geschrieben am: 03.11.2012 11:46:10

Hallo ransi,
danke für die Antwort. Die Datei kann ich leider aus Geheimhaltungsgründen nicht zur Verfügung stellen.
Mich interessiert vor allem, was beim einmaligen Drüken von ESC passiert. Ich war immer der Meinung, dass bereits die erste Betätigung von ESC ein laufendes Makro beendet.
Das was beim ersten Drücken verändert wird bremst die Berechnung offensichtlich aus. Ich vermute, dass es etwas mit der Userform zu tun hat, konnte aber zu dem Thema nirgends was finden.

Danke
Martin


 

Beiträge aus den Excel-Beispielen zum Thema "Userform und Performance"