Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UserForm anzeigen, Makro läuft im Hintergrund

Forumthread: UserForm anzeigen, Makro läuft im Hintergrund

UserForm anzeigen, Makro läuft im Hintergrund
28.05.2004 10:44:14
Remo
Hallo miteinander
Ich habe ein längeres Makro. Läuft ca. 30 Sekunden.
Um die Wartezeit zu verkürzen, möchte ich eine Userform einblenden.
Klappt auch. Nur, wie schaffe ich es, dass das Makro im Hintergrund
weiterläuft?
Mit Userform.show geht es nicht
Freue mich auf eure Antworten
Gruss Remo
Anzeige
AW: UserForm anzeigen, Makro läuft im Hintergrund
Kurt
das userform nicht modal anzeigen(Eigenschaften ShowModal = false).
Kurt
AW: UserForm anzeigen, Makro läuft im Hintergrund
Remo
Danke, die UserForm bleibt eingeblendet, Makro läuft.
Allerdings sieht man nur den Rahmen, der Inhalt wird weiss
Wie kann ich das beheben?
AW: UserForm anzeigen, Makro läuft im Hintergrund
Kurt
Poste mal den Code des userforms und wie du es aufrufst.
Kurt
Anzeige
AW: UserForm anzeigen, Makro läuft im Hintergrund
Remo
Hallo Kurt
Ich weiss nicht ob das weiterhilft...
Gruss Remo
Mein Makro
...
UserForm2.Show(Modal)
...
Mein Makro
Code der UserForm:

Private Sub Image1_Click()
End Sub


Private Sub Label1_Click()
End Sub


Private Sub UserForm_Initialize()
Image1.Picture = LoadPicture("C:\Eigene Dateien\Beispiele\Kaffee.gif")
End Sub

Anzeige
AW: UserForm anzeigen, Makro läuft im Hintergrund
Kurt
UserForm2.Show
Stell das nicht modal in den Eigenschaften ein!

Private Sub UserForm_Initialize()
DoEvents
Image1.Picture = LoadPicture("C:\Eigene Dateien\Beispiele\Kaffee.gif")
End Sub

Kurt
AW: UserForm anzeigen, Makro läuft im Hintergrund
Remo
Wieder das gleiche Resultat wie beim 1.Mal
UserForm erscheint, oben steht "UserForm2"
Inhalt erscheint jedoch nicht, UserForm ist weiss
Anzeige
AW: UserForm anzeigen, Makro läuft im Hintergrund
Kurt
Versuch mal noch dies:
UserForm2.Show
DoEvents

Private Sub UserForm_activate()
DoEvents
Image1.Picture = LoadPicture("C:\Eigene Dateien\Beispiele\Kaffee.gif")
End Sub

Kurt
Funktioniert! - Danke für deine Ausdauer... o.T.
Remo
;
Anzeige
Anzeige

Infobox / Tutorial

UserForm im Hintergrund anzeigen lassen


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne den VBA-Editor (ALT + F11) und erstelle eine neue UserForm. Füge die gewünschten Steuerelemente hinzu, z.B. ein Bild oder Labels.

  2. ShowModal-Eigenschaft anpassen: Setze die ShowModal-Eigenschaft der UserForm auf False. Dadurch kann das Makro im Hintergrund weiterlaufen, während die UserForm angezeigt wird.

  3. UserForm anzeigen: Verwende den folgenden Code, um die UserForm anzuzeigen:

    UserForm2.Show
  4. DoEvents verwenden: Um sicherzustellen, dass die UserForm korrekt geladen wird, füge DoEvents in den UserForm_Initialize- oder UserForm_activate-Ereignis ein:

    Private Sub UserForm_Initialize()
        DoEvents
        Image1.Picture = LoadPicture("C:\Eigene Dateien\Beispiele\Kaffee.gif")
    End Sub
  5. Makro im Hintergrund laufen lassen: Stelle sicher, dass dein Hauptmakro weiterhin läuft, während die UserForm angezeigt wird.


Häufige Fehler und Lösungen

  • UserForm zeigt nur einen weißen Rahmen: Wenn der Inhalt der UserForm nicht sichtbar ist, überprüfe, ob die ShowModal-Eigenschaft auf False gesetzt ist. Stelle sicher, dass du DoEvents in den Initialisierungsprozess der UserForm integriert hast.

  • Bild wird nicht angezeigt: Überprüfe den Pfad der Bilddatei. Achte darauf, dass der Pfad korrekt ist und das Bild im richtigen Format vorliegt.


Alternative Methoden

  • Verwendung von ProgressBar: Statt einer UserForm kannst du auch eine ProgressBar verwenden, um den Fortschritt eines langen Makros anzuzeigen. Diese Methode ist besonders nützlich, wenn du nur den Fortschritt ohne zusätzliche Informationen anzeigen möchtest.

  • Statusleiste nutzen: Du kannst die Statusleiste in Excel verwenden, um Informationen über den Fortschritt des Makros anzuzeigen, ohne eine UserForm zu benötigen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du eine UserForm mit einem Bild anzeigst, während ein längeres Makro im Hintergrund läuft.

Sub HauptMakro()
    UserForm2.Show
    DoEvents
    ' Simulation eines langen Prozesses
    Dim i As Long
    For i = 1 To 1000000
        ' Deine Berechnungen oder Prozesse hier
    Next i
    Unload UserForm2
End Sub

In diesem Beispiel zeigt UserForm2 ein Bild an, während das Makro eine Schleife von 1 bis 1 Million durchläuft.


Tipps für Profis

  • Optimierung der UserForm: Minimale Steuerelemente verwenden, um die Ladezeit der UserForm zu reduzieren. Überlege, ob du Animationen oder komplexe Grafiken benötigst.

  • Fehlerbehandlung implementieren: Nutze On Error Resume Next, um sicherzustellen, dass dein Makro nicht aufgrund eines Fehlers stoppt, während die UserForm angezeigt wird.

  • Ereignisse nutzen: Du kannst auch andere Ereignisse wie UserForm_QueryClose nutzen, um zusätzliche Logik hinzuzufügen, wenn die UserForm geschlossen wird.


FAQ: Häufige Fragen

1. Warum wird die UserForm nicht angezeigt? Stelle sicher, dass die ShowModal-Eigenschaft auf False gesetzt ist und dass du DoEvents verwendest, um die UserForm korrekt zu laden.

2. Wie kann ich die UserForm schließen, wenn das Makro fertig ist? Verwende Unload UserForm2 am Ende deines Hauptmakros, um die UserForm zu schließen, nachdem das Makro abgeschlossen ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige