VBA Excel Mitteilung am Bildschirm

Wie schafft man es, dem Excel 2003 User mitzuteilen, das noch ein VBA-Code läuft?

 Ich habe eine Routine, die etwas länger dauert und beim Blattwechsel automatisch startet.

Damit der User nicht abbricht, möchte ich eine Meldung ausgeben.

Schalte ich aber eine eigene Userform dafür, bleibt der Code beim UserForm.Show hängen und arbeitet nicht weiter.

Hat jemand Vorschläge?

Schon mal Dank vorab.

Schalte ich aber eine eigene Userform dafür, bleibt der Code
beim UserForm.Show hängen und arbeitet nicht weiter.

Hallo Amtsschimmel,

UserForm1.Show 0

Gruß
Reinhard

Hallo Amtsschimmel,
vermutlich hast Du eine Vorstellung davon, wie lange etwa Deine Routine laufen wird. Wir wär es mit einer einfachen MsgBox, die den Benutzer darüber informiert, dass die nun folgende Routine etwa so und so lange laufen wird.
Mit OK akzeptiert der Benutzer dann, dass er sich einige Sekunden oder Minuten gedulden werden muss.
MfG MwieMichel

Das mit dem OK wollte ich ja gerade vermeiden. Und die Lösung von Reinhard ist perfekt.

Danke, das ging ja blitzschnell

Danke an Alle, die sich hier gemeldet haben (im Forum, wie in der direkten Anfrage).

Das mit dem Userform1.Show 0 kannte ich bisher nicht.

es wiehert und grüßt
der Amtsschimmel

Hallo Hottehü :smile:,

Danke an Alle, die sich hier gemeldet haben (im Forum, wie in
der direkten Anfrage).

eine Frage hätte ich dazu, grad wegen sagenhaften Umbauten hier im Forum der letzten Tage ist mein Overlooking verloren gegangen.
Du könntest das wissen, sehe ich hier im Forum alle Antworten die du erhalten hast?
Wäre nett du würdest mich da aufklären.

Das mit dem Userform1.Show 0 kannte ich bisher nicht.

Diese Userform ist nur eine Möglichkeit. Gibt auch andere Möglichkeiten User auf etwas hinzuweisen. Bei Interesse sage ich dir ein paar aber deute maximal die Codierung an.
Das was Michel sagt ist nur die halbe Wahrheit. Leute können nicht warten und man sagt Deutsche am wenigsten lange.

Jetzt sitzt ein typischer Ungeduldiger am PC, es erscheint von mir aus per Userform die Ansage, „I’m working“, „dauert ca.2 Minuten“ o.ä.
Tja nun, was macht der User nach 5 min, nach 10 min?

Dann ist es schon viel besser in die UF eine Fortschrittsanzeige einzubauen.
Im einfachsten Fall nur den Hinweis, Makro läuft, achten Sie bitte unten auf die Statuszeile, (in Vba heißt die Statusbar).

In der Statusbar zeigste halt den Fortschritt an.
Mal ein Beispiel, du willst in einem Verzeichnis, vllt. mit vielen Unterordnern, alle Dateien „aufsammeln“, also in den Vba-Speicher stellen um sie anschließend einzeln nacheinander auf Inhalte zu prüfen oder so.

Dann könntest du zuerst in der Statusbar anzeiigen lassen, „Lese dateien ein, kann je nach Anzahl der Dateien dauern“
Für diese Zeit, kann ja bei Festplatten mit TeraByte lang dauern, kenne ich keine Möglichkeiten der Forschriftsanzeige da sowas mit .Execute o.ä. gestartet wird und man hat dann mit Vba keinen Zugriff, erst wenn das beendet ist.

Dann kann man, da man die Anzahl der gefundenen Dateien nun kennt, auslesen kann, in der Statuszeile schreiben lassen:
Bearbeite Datei X / 589
Wobei Vba das x hochzählt.

Btw, die statusbar bleibt grad bei vielen Dateien o.ä. manchmal hängen.
Abhilfe ist in die Forschleife die die gefundenen Dateien einzubauen:
Wenn Zählvariable/100 den Rest 0 hat
Doevents.
Dann flutscht Statusbar wieder.

Ich hoffe sehr ich was verständlich.

Achja, wenn du in deine UF eine Fortschrittsanzeige einbauen willst, kein Akt, mit
Vba Fortschrittsanzeige
in Suchmaschinen findest du reichlich was.

Gruß
Reinhard

es wiehert und grüßt
der Amtsschimmel