Office: MsgBox anzeigen während das Makro läuft

Helfe beim Thema MsgBox anzeigen während das Makro läuft in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe ein Makro dessen Ausführung relativ lange dauert. Ich möchte während das Makro läuft eine MsgBox anzeigen die den Benutzer... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von SimBa1408, 28. Januar 2008.

  1. MsgBox anzeigen während das Makro läuft


    Hallo zusammen,

    ich habe ein Makro dessen Ausführung relativ lange dauert. Ich möchte während das Makro läuft eine MsgBox anzeigen die den Benutzer auffordert, zu warten. Die Meldung soll nicht in der Statusleiste angezeigt werden, sondern in einer MsgBox (oder sowas ähnlichem), was dem Benutzer sofort ins Auge springt.
    Ist das möglich?

    Viele Grüße, Simone

    :)
     
    SimBa1408, 28. Januar 2008
    #1
  2. Hallo Simone,

    du kannst dafür ein UserForm(ular) verwenden, dass du mit
    Code:
    einblendest. Zum Ausblenden fügst du einfach einen CommandButton auf dem UserForm(ular) ein und hinterlegst den entsprechenden Code.

    Gruß Ingolf
     
  3. Hallo Ingolf,

    das versteh ich irgendwie nicht, ich habe noch nie mit userforms gearbeitet. Mit welchem Code muss ich das Ding hinterlegen? und wie kann ich das machen?
     
    SimBa1408, 30. Januar 2008
    #3
  4. MsgBox anzeigen während das Makro läuft

    Hallo Simone,

    im VBA-Editor fügst du zunächst über Einfügen | UserForm ein neues Userform(ular) in die Datei ein. Zusammen mit dem neuen, leeren Userform(ular) erscheint eine Symbolleiste "Werkzeugsammlung". Auf dieser Symbolleiste gibt es allerlei Steuerelemente, die sich mit der Maus auf das Userform(ular) ziehen lassen. Du benötigst ein Bezeichnungsfeld und eine Befehlsschaltfläche. Zieh also beides auf das Userform(ular). Wenn du mit der Maus über ein Symbol fährst, bekommst du dessen Bezeichnung angezeigt! In das Bezeichnungsfeld kannst du einen Text eingeben, der dem Benutzer deines Makros später angezeigt wird, während dein Makro läuft. Die Befehlsschaltfläche brauchst du, um am Ende deines Makros das Userform(ular) per Mausklick auf eben diese Befehlsschaltfläche wieder ausblenden zu können.

    Das Bezeichnungsfeld läßt sich mit der Maus vergrößern und auf dem Userformular positionieren. Im Eigenschaftenfenster (evtl. mit F4 einblenden) lassen sich auch Schriftart und -größe und noch manch anderes einstellen. Auch der Text der Befehlsschaltfläche läßt sich über das Eigenschaftsfenster (Eigenschaft "Caption") ändern.

    Jetzt musst du noch der Befehlsschaltfläche den Code zum Ausblenden bzw. Entladen des Userform(ular)s hinterlegen. Dazu machst du einen Doppelklick auf die Befehlsschaltfläche. Dadurch kommst du in das Codemodul des Userform(ular)s. Hier musst du die bereits automatisch eingefügte Prozedur nur folgendermaßen ergänzen:
    Code:
     
  5. Ah ok, danke, ich hab jetzt eine Userform und die wird auch an der richtigen Stelle eingeblendet, allerdings steht da nix drin. Die Einträge werden erst dann sichtbar, wenn das Makro schon zuende ist. Ich habe aber den Aufruf der Userform ganz an den Anfang des Makros gestellt, noch vor
    Code:
    Hast Du ne Ahnung woran das liegen könnte?

    Viele Grüße, Simone
     
    SimBa1408, 30. Januar 2008
    #5
  6. Hallo Simone,

    versuch mal folgende Ergänzung. Damit wartet das Makro noch eine Sekunde, um Excel Zeit zu geben, das Userformular vollständig anzuzeigen.
    Code:
    Gruß Ingolf
     
  7. Prima, das klappt jetzt. Vielen Dank für Deine Hilfe *Smilie

    Viele Grüße und noch einen schönen Tag,

    Simone
     
    SimBa1408, 30. Januar 2008
    #7
  8. MsgBox anzeigen während das Makro läuft

    hallo zusammen,

    ich hätte da doch noch eine kleine Frage:

    In meinem hier beschriebenen Makro gibt es eine for-Schleife, die einige Male ausgeführt wird.
    Gibt es die Möglichkeit, in der Userform einen zähler einzublenden, sowas wie "Durchlauf Nummer x von 250 Durchläufen"? Das x ist in dem Fall der Schleifenzähler. Ich möchte damit dem Benutzer den Fortschritt anzeigen, den das Makro macht, damit er in etwa abschätzen kann wie lange es noch dauert.

    Viele Grüße, Simone
     
    SimBa1408, 31. Januar 2008
    #8
  9. Hallo Simone,

    klar geht das. Folgende Codezeile kommt an den Anfang oder das Ende der For...Next-Schleife, ganz nach Geschmack:
    Code:
    UserForm1 ist dein Userformular, Label1 das Bezeichnungsfeld, wie in meiner Antwort #4 beschrieben und lngZaehler ist die Variable deiner For...Next-Schleife. Wenn auch die Anzahl der Schleifendurchläufe in einer Variablen steckt, muss das Ganze eben so aussehen:
    Code:
    wobei lngDurchlaeufe die Variable mit der Anzahl der Schleifendurchläufe ist.

    Gruß Ingolf
     
  10. hiho

    ich würde mal deinen Code posten, den Progressbars werden nicht oft benötigt, zumeist leigt es daran das Unmengen von select und activate im Code sind. *Smilie

    aber hier mal eine Demo, die mit der Progressbar erstellt worden ist
    (zusätzliche Steuerelemente)
     
    chris-kaiser, 31. Januar 2008
    #10
  11. Moin zusammen.

    Ich nutze auch gelegentlich solche "Bitte-Warten" Formulare, aber in wesentlich aufwändigerer und uneleganter Weise, wie ich eben festgestellt habe.

    Daher zwei Fragen zu diesen Methoden:

    -UserForm1.Show vbModeless:
    bewirkt das vbmodeless, daß die Userformnur angezeigt wird, aber der eigentliche Code weiterläuft? Denn normalerweise wird dann doch gewartet bis die Userform wieder geschlossen wird.

    Desweiteren nehme ich mal an, daß diese Userform dann am Ende der Warterei wieder zugemacht bzw entladen werden muß

    -wenn ich aus der aufrufenden Prozedur heraus die Userform ändere, muß doch eigentlich noch repainted werden oder erübrigt sich das mit der vbmodeless-Variante?

    Mfg Sturmovik
     
    Sturmovik, 31. Januar 2008
    #11
  12. Hallo Sturmovik,

    der Parameter vbModeless bewirkt in der Tat, dass das Makro während der Anzeige des Userformulares weiterläuft.

    Das Userformular muss am Ende des Makros wieder zugemacht werden. Dazu kann man entweder einen CommandButton und eine zugeordnete Ereignisprozedur verwenden. Oder man integriert das Ausblenden/Entladen in das weiterlaufende Makro.

    Ich nehme mal an, mit "repainted" meinst du, dass die abgeschaltete Bildschirmaktualisierung wieder eingeschaltet werden muss. Das habe ich in der Tat vergessen. Wenn man den Text im Label auf dem Userformular während des Makroablaufes ändern will, muss man natürlich die Bildschirmaktualisierung aktivieren. Allerdings läßt man sie dann sinnigerweise am Besten gleich ganz weg.

    Gruß Ingolf
     
  13. MsgBox anzeigen während das Makro läuft

    hiho

    ja Code läuft weiter *Smilie

    ja mit
    unload Userform1

    nicht unbedingt!

    im Makro kann das Uf
    mit Userform1.textbox1.text ="ccc"
    z.b angesprochen werden.

    in meiner Demo kannst Du ja den Code mal durchschauen da sind genau diese Dinge enthalten, nur habe ich direkt in den Eigenschaften der Userform vbModeless geändert!
     
    chris-kaiser, 31. Januar 2008
    #13
  14. Danke für die aufklärung, da kann ich das aktuelle Projekt gleich mal verschlanken


    Mit dem repainten meinte ich Userform1.repaint
    Bisher mußte ich das immer machen, wenn ich die Userform von woanders geändert hab. Vielleicht lags am Abschalten des Screenupdating, worauf ich aber in dem Fall aus Geschwindigkeitsgründen nicht verzichten kann

    und die Methode "Unload Me" war mir auch noch nicht bekannt... aber das is ja egal wenn man den Namen der Userform kennt *wink.gif*

    mfg Sturmovik
     
    Sturmovik, 31. Januar 2008
    #14
  15. Hallo Sturmovik,

    danke für die Rückmeldung! Die Methode Repaint kannte ich gar nicht.

    Gruß Ingolf
     
Thema:

MsgBox anzeigen während das Makro läuft

Die Seite wird geladen...
  1. MsgBox anzeigen während das Makro läuft - Similar Threads - MsgBox anzeigen Makro

  2. MsgBox mit Berechnung und Eintrag in Tabelle

    in Microsoft Access Hilfe
    MsgBox mit Berechnung und Eintrag in Tabelle: Moin moin liebe Formengemeinschaft. Nun bin ich schon das WWW am Durchsuchen und habe nichts passendes gefunden. Ausgangspostion: Ich habe eine Datenbank und überwache hier Daten mit einem...
  3. VBA: Mit MsgBox bestimmte Inhalte von Zeile leeren

    in Microsoft Excel Hilfe
    VBA: Mit MsgBox bestimmte Inhalte von Zeile leeren: Hallo Excel Freunde, ich habe in der Tabelle, Spalte A fortlaufende ID Nummern hinterlegt (1-200). Jetzt möchte den Inhalt (Zeile) z.B ID 180 leeren. Dabei soll nicht die ganze Zeile geleert...
  4. VBA-Code Arbeitsblatt wechseln

    in Microsoft Excel Hilfe
    VBA-Code Arbeitsblatt wechseln: Hallo zusammen, ich habe mal wieder eine Frage. Aktuell beschäftige ich mich mit VBA-Codes. Beim öffnen meiner Arbeitsmappe erscheint folgender Hinweis: Private Sub Workbook_Open() 'Titel Hinweis...
  5. MsgBox in Excel anzeigen lassen per Word VBA

    in Microsoft Word Hilfe
    MsgBox in Excel anzeigen lassen per Word VBA: Hallo zusammen, ich bin neu hier und versuche aktuell aus Word heraus eine Exceldatei zu öffnen. Das klappt auch alles schon wunderbar. Jetzt möchte ich gerne, wenn die Excel Datei geöffnet ist,...
  6. MsgBox nur beim ersten Öffnen anzeigen

    in Microsoft Excel Hilfe
    MsgBox nur beim ersten Öffnen anzeigen: Hallo Zusammen, ich habe vor ein paar Tage begonnen mich mit VBA zu beschäftigen, bin also noch recht unerfahren. Mein Chef möchte nun, dass in Excel beim ersten Öffnen der Datei eine MessageBox...
  7. Variable in MsgBox als Wert anzeigen

    in Microsoft Access Hilfe
    Variable in MsgBox als Wert anzeigen: Hi, wie kann ich die Variable "Anzahl" in einer MsgBox als Wert anzeigen lassen? Dim Anzahl As Integer Anzahl = DCount("Lasertyp", "Hybrid Abfrage") If DCount("Lasertyp", "Hybrid Abfrage") =...
  8. Geburtstage der nächsten 7 Tage aus mitarbeiterliste per MsgBox anzeigen

    in Microsoft Excel Hilfe
    Geburtstage der nächsten 7 Tage aus mitarbeiterliste per MsgBox anzeigen: Guten tag, ich bin ein Anfänger mit VBA Programierung. Zu meinem Problem, ich habe eine Personalliste in Excel, welche dem Nutzer beim Start die Geburtstage der nächsten 7 Tage anzeigt. Das...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden