Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1832to1836
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

MsgBox verlangsamt Programm um 5-10x

MsgBox verlangsamt Programm um 5-10x
25.05.2021 17:14:34
Martin
Hallo zusammen =)
ich bin gerade etwas am verzweifeln.
Neuer Rechner für mein neues großes Programm.
Statt Intel NUC nun einen i5-11500.
Ohne jegliche Eingabefelder rennt mein Programm nun von A-Z in 3-3,5 Sekunden durch, im Vergleich zu meinem 7700 k mit etwa 4.5-5 Sekunden und ca. 15 Sekunden mit dem NUC.
Nun gibt es aber das Problem, dass die Leistung auf 30-80 Sekunden (nur auf dem neuen Rechner!!!) zusammenbricht im normalen Zustand mit Eingabefeldern.
Nach vielem Testen konnte ich feststellen, dass die 3 Sekunden erreicht werden, sobald keine einzige MsgBox oder Inputbox aufploppt.
Ich habe ältere Versionen probiert, gleiches Phänomen....
Bsp für die MsgBox:
(Gedankenblitz: liegt es daran dass Msg nicht explizit definiert wurde/ an den Einstellungen im frischen Excel?!?!)
Msg = MsgBox("Wollen sie auch die CSV-Daten laden?", vbYesNo)
' If Msg = vbYes Then
' Call CSVladen_Click
' End If
Office 2016
Build 13929.20386 am neuen PC mit Problemen
Build 13929.20372 bei mir am 7700k
p.s. ich hatte Anfangs noch gedacht, dass am neuen Rechner dieser Block sich durch die MsgBox deaktiviert, aber selbst wenn ich ihn komplett lösche, braucht es ohne MsgBox nur 10 Sekunden.

Private Sub SpeedOn()
'Speedblock on
With Application
.ScreenUpdating = False
.DisplayStatusBar = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
ActiveSheet.DisplayPageBreaks = False
End Sub

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MsgBox verlangsamt Programm um 5-10x
25.05.2021 17:53:30
onur
Hääh?
Jeglicher Code wird nun mal pausiert/unterbrochen, solange eine MsgBox zu sehen ist (solange DU weder "Yes" nocvh "No" geklickt hast) - egal, was du für einen Rechner hast.
AW: MsgBox verlangsamt Programm um 5-10x
25.05.2021 17:58:08
Martin
Für das Ja oder Nein klicken braucht es vielleicht 1-2 Sekunden aber sicher nicht 60!
Außer ich erleide jedes Mal beim Klicken der MsgBox einen Schlaganfall.
Und das auch nur am neuen Rechner.
In dem Sinne darf freudig weiter gerätselt werden ;-)
Danke schön an den, der mich auf die richtige Spur bringen kann =)
p.s. ich dachte zuerst dass es wegen der Länge vom Code zu tun hat, aber selbst beim viel kürzeren Ladebefehl dauert es mit MsgBox 10x so lange, reine Wartezeit.
Anzeige
AW: MsgBox verlangsamt Programm um 5-10x
25.05.2021 18:02:12
onur
Dann hast du wohl noch andere Probleme im Code, den keiner kennt, ausser dir.
Ohne eine gepostete Datei und mit solch mageren Angaben wird dir wohl keiner helfen können, es sei denn, er/sie hat Lust, zig mal hin und her zu raten.
AW: MsgBox verlangsamt Programm um 5-10x
26.05.2021 07:14:19
Martin
Guten Morgen,
der Code ist knapp 60 Seiten lang.
Selbst der Ladecode ist umständlich.
Mir kommt es fast vor, dass bei dem Rechner der PC von Multicore auf Singlecore Performance wechselt bei den JaNein-MsgBoxen und selbst dafür ist es noch zu langsam.
Werde weiter testen.... auch ob es normale MsgBoxen auslösen.
Würde mich über "raten" und Ideen freuen, stochere komplett im Dunkeln.
Anzeige
AW: MsgBox verlangsamt Programm um 5-10x
26.05.2021 07:29:11
SF
Hola,
wenn du das Forum wechselst sag doch bitte Bescheid wo es weiter geht.
Gruß,
steve1da
AW: MsgBox verlangsamt Programm um 5-10x
26.05.2021 07:31:58
Martin
Wenn ich irgendwo neue Hinweise finde oder selbst was am Programm herausfinde, halte ich euch auf den Laufenden.
Wobei die größte Hoffnung von mir hier bei euch liegt....
AW: MsgBox verlangsamt Programm um 5-10x
26.05.2021 07:37:19
SF
Dann wäre es das Mindeste wenn du deine Threads untereinander verlinkst.
Ansonsten arbeiten die Helfer für dich evtl doppelt ohne voneinander zu wissen.
Komisch, dass kein Crossposter ...
28.05.2021 09:18:59
lupo1
... sein Tun auf einen ersten Hinweis hin einsieht.
AW: MsgBox verlangsamt Programm um 5-10x
26.05.2021 07:32:39
RPP63
Moin!
VBA läuft grundsätzlich nur auf einem Kern!
Du solltest Geld in die Hand nehmen, um den Code prüfen zu lassen.
Wie stellst Du Dir ansonsten vor, dass jemand nur aufgrund von Symptomen eine Diagnose stellen kann?
Außerdem:
VBA kennt keine "Seiten", sondern nur Zeilen.
Gruß Ralf
Anzeige
AW: MsgBox verlangsamt Programm um 5-10x
26.05.2021 08:08:43
Martin
Weitere Versuche durchgeführt:
Bereits eine MsgBox "hi" löst das Phänomen aus.
Beim Suchen auf Englisch habe ich gefunden, dass die MsgBoxen (allerdings wohl mit Eingabe) Application.ScreenUpdating = True benötigen, da es sonst "idlet".
Vor und nach der MsgBox aktiviert und deaktiviert; unverändert
Funktion die alles deaktiviert nochmal gezielt gelöscht; langsamer ohne MsgBoxen, aber ähnlich langsam mit einer MsgBox
Habe die Prozessorauslastung pro Kern angeschaut, ist in den 3 Sekunden des schnellen Betriebs sehr hoch und in den 30-80 Sekunden des langsamen Betriebs ähnlich hoch, aber über eine längere Zeit ; mehr Leistung/Aufwand?
Grüße Martin
https://www.computerbase.de/forum/threads/msgbox-verlangsamt-excelprogramm-statt-3-sekunden-nun-fast-80-sekunden.2024736/
Anzeige
AW: MsgBox verlangsamt Programm um 5-10x
26.05.2021 09:10:21
Martin
Habe alle Optionen in Excel verglichen....
Alles gleich, Multithreading deaktiviert... nichts
Ein Eindruck hat sich aber bestätigt, dass Klicken es schneller macht.
Hotfix. Windows Ordner anklicken, dass er im Vordergrund ist, erlaubt das Programm (mit einer MsgBox in 5 Sekunden durchzurennen.
ich hoffe dass die 4-7 Eingabefenster das nun nicht jedesmal benötigen *lach*
Jemand eine Idee mit den neuen Infos?
Kann man das auch per Code nach den MsgBoxen triggern? (es reicht schon auf das Excelsymbol in der Taskleiste zu klicken.
AW: Speicher freigeben
26.05.2021 10:16:02
GerdL
Moin Martin,
am Ende der Prozedur
DoEvents
soll schon geholfen haben.
Gruß Gerd
Anzeige
AW: Speicher freigeben
26.05.2021 16:14:14
Martin
Hallo Gerd,
dankeschön :)
Habe es probiert, beim ersten mal war es schnell, danach nie wieder.
Also war DoEvents wohl auch nicht die Lösung.
Inzwischen habe ich auch zusätzlich zum Office 2016 32 Bit, 2019 32 Bit und 2019 64 Bit durch... alle mit dem gleichen Resultat/Phänomen.
Es reicht übrigens auch, nur das Excelsymbol in der Taskleiste anzuklicken, dass er nach der MsgBox schnell weiter macht.
Vielleicht gibt es ja noch die ein oder andere Idee?
Dankeschön und Grüße,
Martin
AW: Speicher freigeben
26.05.2021 18:13:51
ChrisL
Hi Martin
Vielleicht liege ich komplett falsch, aber ich würde mal mehr in Richtung Windows-Betriebssystem und (Grafik-)Treiber denken. Erstmal sicherstellen, dass alles aktualisiert ist.
Weit hergeholt, aber mal einfache Windows-Themes ohne Animationen und Aero-Glass (Transparent) Effekte ausprobieren.
Ursprung der Idee.
Als Krücke killt der User dwm.exe im Task-Manager und klickt wild rum:
https://www.excelforum.com/excel-programming-vba-macros/1064315-msgbox-popups-freezes-excel.html
dwm.exe scheint mit den erwähnten Effekten zu tun zu haben:
https://www.neuber.com/taskmanager/deutsch/prozess/dwm.exe.html
Die Effekte machen anscheinend auch sonst mal Probleme (es wird u.a. auf die erwähnten Updates verwiesen):
https://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/windows-aero-effects-are-slow/01130792-2e02-45f7-acde-6adfce762ea4
Zwischen MsgBox/DoEvents (was ja einmalig geholfen hat) und Betriebssystem besteht offensichtlich ein Zusammenhang:
https://www.mrexcel.com/board/threads/vba-for-next-loop-runs-slower-after-first-time-through.1099202/
Obige Theorie basiert auf meinem (gefährlichen ;) Halbwissen. Aber nachdem die allgemeinen VBA- und Office-Themen abgeklappert sind, scheint es mir einigermassen plausibel, mal eine Stufe tiefer (Windows/Grafikkarte) zu graben.
cu
Chris
Anzeige
AW: Speicher freigeben
27.05.2021 12:13:42
Martin
Hallo Chris!
Super vielen vielen Dank =)
Das DoEvents hat manchmal funktioniert und dann dauerhaft wieder nicht (habe einfach DoEvents hinzugefügt).
Zumindest hatte es den Anschein, ebenso Hp Touch... deaktiviert und ein paar andere Dinge.
3-4 Mal funktioniert dann nicht mehr.
Kurzum wer weiß ob DoEvents wirklich geholfen hat.
Aber ich kann das Problem weiter einschränken!!! *freu*
Wenn der Mauszeiger nach der MsgBox außerhalb der Zellen gezogen wird
(anderen Bildschirm wenn dort nicht der Code ist), die Ribbon Leiste, die Taskleiste, aber selbst schon über einen eingebauten Button reicht)
dann arbeitet Excel wieder schnell weiter!
Kann es was mit dem Tracking vom MouseOver zu tun haben?
Etwas was a auf dem PC ist oder in Office? Könnte ich das Tracking der Mausposition deaktivieren? eigentlich brauche ich nur Auslösen per Click.
Und nun zufrieden in die Mittagspause, wir kommen der Lösung näher... hoffentlich.
Ganz liebe Grüße und einen guten Appetit,
Martin
Anzeige
AW: Speicher freigeben
27.05.2021 12:30:52
Martin
p.s. selbst an meinem Rechner, wo ich dachte das Problem nicht zu haben, kann ich dadurch schneller das Programm durchrechnen lassen.
3,5 Sekunden statt 4-5 Sekunden.
Wieder anderer Rechner (nicht von HP)
7,5 Sekunden statt 10,5 Sekunden.
AW: Speicher freigeben
27.05.2021 12:56:13
ChrisL
Hi Martin
Ich kann dazu nur sagen, dass sich für mich die These erhärtet, dass das Problem in der Umgebung und nicht im Code und wahrscheinlich auch nicht im Office zu suchen ist.
Hast du geprüft, dass wirklich alles Up To Date ist? Nebst Betriebssystem auch Grafiktreiber und alle anderen Treiber (u.a. HP-Treiber, weil von dir speziell erwähnt) nicht vergessen:
https://support.hp.com/ch-de/drivers
cu
Chris
Anzeige
AW: Speicher freigeben
27.05.2021 14:15:32
Martin
Hi Chris,
Windows ist Up to Date. Grafiktreiber nach deinem ersten Tipp schon neu installiert.
Lässt sich auf alle Geräten, wenn auch weniger stark ausgeprägt, reporduzieren.
Dass der Code mit MsgBox schneller ist, wenn man die Maus außerhalb der Zellen/Datei zieht (ohne klicken....).
Hat jemand auch ein Programm mit mehreren Sekunden Laufzeit und einer MsgBox? Wäre interessant, ob es dann dort auch auftritt :)
Und/oder hat jemand ein Demoprogramm für mich zu testen?
AW: Speicher freigeben
27.05.2021 17:55:01
ChrisL
Hi Martin
Und die HP Treiber hast du wahrscheinlich auch aktualisiert.
Mir fällt dann auch nichts mehr ein und ich verabschiede mich hier.
Nachfolgend noch ein einfaches Testmakro. Repräsentativ (grössere Anzahl an Stichproben etc.) habe ich es nicht angewendet. Auf den ersten Blick konnte ich keine Unterschiede erkennen, ob die MsgBox aktiv oder auskommentiert war. Bei mir ist der Schnitt je Schleife ca. 9 sek. (Total 18-20 sek.).
cu
Chris

Sub messen()
t1 = Now
For i = 1 To 1000000000
x = i
Next i
t2 = Now
MsgBox "..."
t3 = Now
For i = 1 To 1000000000
x = i
Next i
Debug.Print Format(t2 - t1, "hh:mm:ss") & "  -  " & Format(Now - t3, "hh:mm:ss")
End Sub

Anzeige
Muss man denn mit MsgBox arbeiten?
28.05.2021 09:23:24
lupo1
Oder tut es auch ein Dialogfeld, in welchem man anfangs alle Einstellungen vornimmt?
Ich weiß: Dadurch, dass es nicht sequenziell gefüllt wird, ist die Logik komplexer.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige