Clever-Excel-Forum

Normale Version: Application.StatusBar deutlich verlangsamt in Excel 2016
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo liebes Forum,

mir ist heute etwas aufgefallen und ich wollte wissen, ob das Problem jemand kennt.

Ich bin von Excel 2010 zu Excel 2016 gewechselt und einige Makros laufen jetzt sehr viel langsamer als vorher. Als Grund konnte ich die Funktion Application.StatusBar ausfindig machen, mit der ich mir immer anzeigen lasse, wie weit das Makro gerade ist.

Für das folgende simple Makro zum Beispiel braucht Excel 2016 hier 12 Sekunden, während Excel 2010 nur 2 Sekunden benötigt.

Sub test()
    t = Now
    For i = 1 To 5000
        Application.StatusBar = i
        l = i
    Next i
    Cells(1, 1) = Format(Now - t, "hh:mm:ss:ms")
End Sub

Wie kann das sein? Mir ist schon aufgefallen, dass die Reaktionen von Excel 2016 irgendwie "smooth" geworden sind, zum Beispiel wenn man einen Zellenbereich markiert. Kann das daran liegen? Und kann man das irgendwie ausstellen?

Ich möchte nicht unbedingt auf Application.StatusBar verzichten, auch wenn ich weiß, dass es noch andere Möglichkeiten gibt, um den Fortschritt des Makros anzuzeigen.

Vielen Dank für Eure Antwort.

Kieks
Hallo Kieks

Hast auch noch den PC gewechselt?

Auf Windows 7, i7, 3,6 GHz, Office 2010 = 1,121 Sekunden
Auf Windows 10, i7, 2.5 GHz, Office 2016 = 2,123 Sekunden

Gruss Guschti
Hallo Guschti,

danke für deine Antwort!

Du hast recht, ich habe auch den PC gewechselt.

Vorher:
Windows 7, i7, 2,6GHz, 2 Kerne, 4 logische Prozessoren

Jetzt:
Windows 10, i5, 1,7GHz, 4 Kerne, 8 logische Prozessoren

Ich hätte nicht gedacht, dass sich das so stark auf Excel auswirkt. Aber dann muss es wohl daran liegen.
Hallo,

wozu eine Statusbar? Man kann seine Programme auch so schreiben, dass sie so schnell sind, dass man keine solchen Spielereien benötigt.
Es gibt bestimmt einen Haufen von Gründen, warum ich die Anzeige des Status in der StatusBar jetzt beibehalten möchte. Und selbst wenn es nur eine Spielerei ist, sollte Excel 2016 das nicht verlangsamen.
Betrifft aber nicht die eigentliche Frage, Klaus-Dieter!
Zitat:Mir ist schon aufgefallen, dass die Reaktionen von Excel 2016 irgendwie "smooth" geworden sind, zum Beispiel wenn man einen Zellenbereich markiert.

Derjenige, der sich diesen Schwachsinn hat einfallen lassen, bekommt sicherlich Stundenlohn und wird nicht nach Produktivität bezahlt!  Angry

Abhilfe:
Datei, Optionen, "erleichterte Bedienung"
Feedbackoptionen, Feedback mit Animationen bereitstellen deaktivieren!

[attachment=26997]

Ob es allerdings hilft, lasse ich mal dahingestellt und schließe mich der Meinung von Klaus-Dieter denn doch an.

Gruß Ralf
Danke für den Hinweis, Ralf! Das Problem ist dadurch nicht gelöst.

Ich vermute ganz stark, dass es an diesem Problem liegt:

https://answers.microsoft.com/en-us/msof...5b7?page=1

Davon bin ich nämlich auch betroffen.

Ich muss mich wohl erstmal damit abfinden.
Hallo Kieks

für mich war die Ausgabe in der Statusleiste schon immer ein Zeitfresser ohne Ende, auch schon bei Excel2010. Irgendwann bin ich drauf gekommen, dass man ja nicht jede Zahl ausgeben muß, wenn man nur den Fortschritt verfolgen will. Bezogen auf deinen Test bedeutet dies

If (i Mod 10 = 0) Then Application.StatusBar = i

verkürzt die Laufzeit bei mir auf ein Zehntel. Je nach dem wie groß die Schleife ist, kann man auch mod 100 oder größer sagen. Hilft das ?


vg, MM
Hallo MM

Das entspricht 
Code:
For i = 1 To 500
Gruss Guschti
Hallo Guschti,

ja klar, bezogen auf den einfachen Testfall ist das richtig. Aber, normalerweise passiert in der Schleife ein bisschen mehr als nur die triviale Ausgabe einer Nummer in der Statuszeile und man kann den Grenzwert des Schleifenzählers nicht ändern, nur weil die Ausgabe der Nummer lahm ist.

vg, MM
Seiten: 1 2 3