Bereitstellung von Statusaktualisierungen für Makro, die bis zur Fertigstellung nicht reagieren

StackOverflow https://stackoverflow.com//questions/9622983

  •  09-12-2019
  •  | 
  •  

Frage

Ich habe ein VBA-Makro, um per E-Mail-Archive zu suchen.

Wenn Sie beim Durchsuchen von Zehntausenden von E-Mails (oder sogar nur ein paar hundert auf meinem Testgerät) den Status für ein paar Sekunden an, wenden anschließend einen nicht reagierenden Zustand, während er den Rest der E-Mails läuft.

Dies hat ungeduldige Benutzer dazu geführt, die Aufgabe vorzeitig aus der Aufgabe zu schließen, und ich möchte dies beheben, indem ich Statusupdates bereitstellt.

Ich habe die folgende Lösung kodiert, und glauben, dass das Problem in der Art und Weise liegt, wie der Garbaglecollector während der Schleife in VBA funktioniert. generasacodicetagpre.

War es hilfreich?

Lösung

Ändern Sie die Zeile

UserForm1.Repaint

bis

DoEvents

Ja, das erhöht die Ausführungszeit, aber falls es Tausende von E-Mails gibt, dann haben Sie keine große Option.

Tipp: Vielleicht möchten Sie auch ändern

StatusBarMsg = "Processing " & x & " out of " & initialCount & " messages."

bis

StatusBarMsg = "Please do not interrupt. Processing " & x & " out of " & initialCount & " messages."

Es ist auch ratsam, Ihren Benutzer zu Beginn des Prozesses zu informieren, dass es sich um Zeit brauchen, und daher können sie den Prozess ausführen, wenn sie sicher sind, dass sie nicht an diesem PC arbeiten möchten?

so etwas so generasacodicetagpre.

hth

side

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top