Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Application.StatusBar deutlich verlangsamt in Excel 2016
#1
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
Antworten Top
#2
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
Der Künstler lebt auch vom Applaus
Excel Optimaler Zuschnitt von Stangen/Balken - YouTube
Antworten Top
#3
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.
Antworten Top
#4
Hallo,

wozu eine Statusbar? Man kann seine Programme auch so schreiben, dass sie so schnell sind, dass man keine solchen Spielereien benötigt.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#5
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.
Antworten Top
#6
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!

   

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

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
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.
Antworten Top
#8
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
Antworten Top
#9
Hallo MM

Das entspricht 
Code:
For i = 1 To 500
Gruss Guschti
Der Künstler lebt auch vom Applaus
Excel Optimaler Zuschnitt von Stangen/Balken - YouTube
Antworten Top
#10
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste