Bitte Warten Userform bis Datenverarbeitung erledigt ist

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von INOPIAE.

    Bitte Warten Userform bis Datenverarbeitung erledigt ist

    Hallo, ich erstelle mir per VBA aus verschiedenen Tabellen eine Übersichtstabelle aufgrund verschiedener Parameter. Diese Tabelle wird dann auch als PDF Exportiert und der PDF Reader geöffnet, das dauert natürlich einige Sekunden (ca.60 Sekunden), ich würde gerne vom Aufruf des Prozesses welcher aus einem Userform erfolgt bis dann das PDF geöffnet ist eine Hinweis Meldung einblenden in Form von z.b. "Bitte Warten, die Daten werden aufbereitet" und wenn das PDF geöffnet wird, soll der Hinweis wieder verschwinden.

    Wie kann ich das anstellen? Ich hatte jetzt ein weiteres Userform mit der Hinweismeldung angelegt und es als Modal definiert, aber dann läuft der Code anscheint nicht weiter im Hintergrund wenn ich es richtig sehe.

    Wie kann ich das lösen?

    Danke
    Lege doch auf deinem Formular ein Labelfeld an, in dem Du dann beim Start des Exports reinschreibst "bitte warten", wenn die Prozedur fertig ist, löschst Du den Inhalt des labels wieder.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Hallo nochmal,
    ich hab es jetzt mal getestet, rein optisch gefällt es mir noch nicht (was man ja aber wahrscheinlich noch passender machen könnte), wäre da über Design Vorschlage nicht traurig. Es ist auch irgendwie nicht so richtig auffalend im Gesamtbild....
    Aber leider ist es auch noch nicht wirklich korrekt funktional, ich habe einen Rahmen genommen in den ich ein Label gepackt hab, beides hab ich zu beginn in den Eigenschaften Visible=False gesetzt und relativ mittig auf dem Userform platziert. Die idee war jetzt wenn die Berechnung läuft dann wird der Rahmen und das Label eingeblendet. Aber wie auf dem zweiten Bild zu sehen wird nur ein teil eingeblendet, aber ohne den Text, der kommt erst später dazu....

    Der Code sieht so aus im Modul wo die Berechnung durchgeführt wird.

    Quellcode

    1. Sub DruckAusgabe()
    2. ​forMitarbeiter.lblBitteWarten.Visible = True
    3. forMitarbeiter.frmBitteWarten.Visible = True
    4. ........
    5. End Sub
    Bilder
    • Bild_2022-12-14_112837881.png

      2,58 kB, 269×99, 122 mal angesehen
    • Bild_2022-12-14_113208519.png

      441 Byte, 268×98, 156 mal angesehen
    Do musst noch das Formular mit Application.DoEvents neu zeichnen:

    Visual Basic-Quellcode

    1. ​Sub DruckAusgabe()
    2. forMitarbeiter.lblBitteWarten.Visible = True
    3. forMitarbeiter.frmBitteWarten.Visible = True
    4. Application.DoEvents()
    5. ........
    6. End Sub


    Siehe https://learn.microsoft.com/de-de/dotnet/api/system.windows.forms.application.doevents?view=windowsdesktop-7.0

    Mein Vorschlag ist nicht ein neues Formular aufzumachen, sondern dies in dem bestehende Formular anzuzeigen.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).