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