Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1260to1264
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

application.statusbar

application.statusbar
heinz.schikorra@tomra.de
Hallo,
in einem VBA Programm habe ich eine Verlaufsanzeige in einer Schleife. Nach ca. 12.000 Durchläufen wird die Statusanzeige nicht mehr aktualisiert. Den Code habe ich unten aufgeführt:
application.calculation = xlcalculationmanual
application.screenupdating = false
for i1 = 1 to 80000
application.statusbar = "Datensatz " & format(i1,"0000000")
'... hier geschehen weitere Aktionen
next i1
application.screenupdating = true
application.statusbar = false
application.calculation = xlautomatic
Frage: Wie kann ich das Einfrieren verhindern?
Danke für Hilfe!
MfG Heinz

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: application.statusbar
21.04.2012 14:04:11
Hajo_Zi
Hallo Heinz,
ich würde vermuten mit application.screenupdating = false ist auch die statusbar aus.

AW: application.statusbar
21.04.2012 14:13:47
Reinhard
Hallo Heinz,
bau mal Doevents ein
Sub tt()
Dim i1
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For i1 = 1 To 80000
Application.StatusBar = "Datensatz " & Format(i1, "0000000")
'... hier geschehen weitere Aktionen
DoEvents
Next i1
Application.ScreenUpdating = True
Application.StatusBar = False
Application.Calculation = xlAutomatic
End Sub

Gruß
Reinhard
Anzeige
AW: application.statusbar
21.04.2012 21:04:55
fcs
Hallo Heinz,
dies ist ein typisches Verhalten von Excel 2007/2010 bei VBA-Makros mit langer Laufzeit -zumindest bei mir in Verbindung mit Windows-Vista tritt dieses Phänomen auch immer wieder auf.
Das Excel-Programmfenster wird dann bei mir auch meist mit dem Status "keine Rückmeldung" angezeigt.
Zur Ursache (Office/Excel-intern oder Windows-Betriebssystem) hab ich bisher nichts herausgefunden.
Gruß
Franz
Nachfrage
21.04.2012 21:55:10
Reinhard
Hallo Franz,
den Code den ich zeigte habe ich getestet. Mit DoEvents dauerte er schon länger
und mein Eindruck war daß da das in der Statusbar länger sichtbar war und nicht so durchgehuscht
ist wie ohne DoEvents.
So wie du es schreibst scheint DoEvents nix zu bringen. Ist das sicher?
Zu dem "keine Rückmeldung"
Mir ist das sehr unklar, auch in XL2000. Es bedeute m:E. nur daß grad in den Momenten Win
oder sonstwer, vielleicht Excel von dem Code keine Rückmeldung erhät.
Was immer das sein soll.
Schon häfig war es so bei länger dauernden Codes daß zwar zwischenzeitlich "keine Rückmeldung"
angezeigt wird im Editor-Fenster, auch Umschalten zu Excel geht nicht, aber dann wenn
der Code fertig ist geht wieder alles wie immer.
Andererseits hatte ich es auch schon mehrfach daß ich bei "keine Rückmeldung"
und wahrlich langer Wartezeit nur noch den Taskmanager bemühen konnte und Excel abzuschießen.
Hast du gleiche Erfahrungen? Wenn ja berichte bitte wie du dir vorstellst was da ablaufen könnte.
Gruß
Reinhard
Anzeige
AW: Nachfrage
22.04.2012 19:43:08
fcs
Hallo Reinhard,
ich hab mal ein wenig rumprobiert. Mit dem Einbau von "DoEvents" in die For_Next-Schleife bzw. vor jede Statusanzeige wird die Anzeige der Statuszeile ständig aktualisiert. Wie von dir beobachtet benötigt ein Makro dann etwas mehr Zeit.
Wann "keine Rückmeldung" kommt ist scheinbar auch etwas unterschiedlich. Es scheint davon abzuhängen, wie beschäfftigt Windows insgesamt ist und ob Excel schon längere Zeit in Betrieb ist. Jedenfalls konnte ich beobachten, dass nach dem Neu-Start von Excel oder auch nach dem Öffnen einer Datei Makros durchlaufen ohne Hinweis "keine Rückmeldung" aber nach mehrmaliger Ausführung kam dann die Anzeige.
Als Alternative zur Statuszeile kann man den Bearbeitungsfortschritt auch in einem ungebundenem Userform anzeigen. Dazu wird der Anzeige-Text in den Fenstertitel des UF geschrieben (Caption-Eigenschaft des UF). Die Verzögerung im Makro ist dann etwas größer als bei Anzeige in Statuszeile.
"keine Rückmeldung" und Excel hängt sich auf. Dann beenden via Taskmanager oder Alt+F4.
Kommt meistens vor bei umfangreichen Lösch-/Kopieraktionen in Verbindung mit komplexen Formeln. Passiert sowohl bei der Ausführung von Makros als auch im Handbetrieb. Das scheint immer noch eine Schwäche in der Speicherverwaltung (Arbeitsspeicher/Auslagerungsdatei/Zwischenablage/Undofunktion) zu sein nach der Umstellung auf größere Zeilen-/Spaltenanzahl in Excel 2007.
Gruß
Franz
Anzeige
Danke Franz für deine Informationen o.w.T
22.04.2012 22:39:58
Reinhard

AW: Danke Franz für deine Informationen o.w.T
24.04.2012 08:14:32
Martin
Hallo Reinhard,
dann setze DoEvents doch einfach bei jedem 100sten oder 1000sten Schleifendurchlauf ein. Dann wird dein Makro nicht erheblich langsamer und du siehst den Status.
Viele Grüße
Martin

16 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige