Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Userform anzeigen und Code weiterlaufen lassen

Userform anzeigen und Code weiterlaufen lassen
29.05.2009 11:37:34
Jaffi
Hallo liebes Forum,
mal wieder brauche ich Hilfe :(
Ich habe mit der Hilfe von Franz eine Auswertung meiner Tabelle eingefügt. Da diese schon mal 5-10 sek. läuft möchte ich eine Userform einblenden.
Dies klappt mit meinen mikrigen VBA Kenntnissen auch. Nur leider wird der Code während das Userform eingeblendet ist nicht weiter ausgeführt :(
Beim googlen habe ich zwei Sachen gefunden:
1. In den Eigenschaften der Userform showModal=false setzen (diese Eigenschaft finde ich in meiner Version nicht :(( )
2. Das Userform mit Zusatz ... vb Modless anzeigen (klappt leider nicht)
Ich starte das Userform zu Beginn der Auswertung mit

Load UserFormauswertemeldung
UserFormauswertemeldung.Show


und blende es am Ende mit Unload wieder aus.
Kann mir jemand einen Tip geben was ich falsch mache? Die Auswertung wird nur weiter durchgeführt wenn ich das Userform zu mache :(
Danke für eure Hilfe
lg
J

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform anzeigen und Code weiterlaufen lassen
29.05.2009 11:57:21
Tino
Hallo,
Du musst Deinen Code zur auswertung in die Userform stellen oder nach dem activieren der Userform über Call meinMakro Deinen Code aufrufen der sich auch in einem Modul befinden kann.
Beispiel:
In Deiner Userforem für die Anzeige.

Private Sub UserForm_Activate()
Me.Repaint      'anzeige aktualisieren
Call MeinMakro  'Dein Makro aufrufen
Unload Me       'Userform wieder beenden.
End Sub


Gruß Tino

Anzeige
AW: Userform anzeigen und Code weiterlaufen lassen
29.05.2009 12:13:15
selli
hallo,
steht auf der userform nur "bitte warten" oder aähnliches, dann ist eine userform vielleicht ein wenig zu viel des guten.
ich würde in so einem fall ein label nehmen, dann brauchst du auch nicht den code (wie es tino richtig vorgeschlagen hat) erst in die userform zu schreiben.
sheets("Tabelle1").label1.visible = true
dein code
sheets("Tabelle1").label1.visible = false
gruß selli
Anzeige
AW: Userform anzeigen und Code weiterlaufen lassen
29.05.2009 12:45:00
Jaffi
richtig selli..
nur bitte warten: ähmm...aber was meinst du jetzt mit einfachem Label?
Ein Label ist doch Teil einer Userform oder sehe ich das falsch?
jetzt stehe ich auf der Leitung, wie erstelle ich ein Label?
Danke für eure Hilfe
J
AW: Userform anzeigen und Code weiterlaufen lassen
29.05.2009 13:07:51
selli
hallo jaffi,
ja, ein label kann auch teil einer userform sein.
es kann aber auch aus der symbolleiste "steuerelemente-toolbox" heraus in ein tabellenblatt eigefügt werden. hier heisst es allerdings in der deutschen version zunächst "bezeichnungsfeld".
da kannst du dann draufschreiben was du möchtest und kannst es dann wie vorhin beschrieben ein bzw. ausblenden lassen.
gruß selli
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Userform in Excel VBA einblenden und Code weiterlaufen lassen


Schritt-für-Schritt-Anleitung

Um eine Userform in Excel VBA anzuzeigen und gleichzeitig den Code weiterlaufen zu lassen, kannst du die folgenden Schritte befolgen:

  1. Userform erstellen: Erstelle eine Userform in deinem VBA-Editor. Du kannst dies tun, indem du im VBA-Editor mit der rechten Maustaste auf dein Projekt klickst und dann „UserForm einfügen“ wählst.

  2. Userform laden: Lade die Userform in deinem Makro, bevor du mit der Auswertung beginnst. Verwende dazu den folgenden Code:

    Load UserFormauswertemeldung
    UserFormauswertemeldung.Show vbModeless

    Achte darauf, vbModeless zu verwenden, damit der Code weiterhin ausgeführt werden kann.

  3. Code zur Auswertung: Platziere den Code für die Auswertung in die UserForm_Activate()-Methode oder rufe ihn nach dem Anzeigen der Userform auf:

    Private Sub UserForm_Activate()
       Me.Repaint  ' Anzeige aktualisieren
       Call MeinMakro  ' Dein Makro aufrufen
       Unload Me  ' Userform wieder beenden
    End Sub
  4. Userform ausblenden: Nachdem die Auswertung abgeschlossen ist, kannst du die Userform mit Unload Me wieder ausblenden.


Häufige Fehler und Lösungen

Fehler: Userform bleibt sichtbar und Code wird nicht weiter ausgeführt.

  • Lösung: Stelle sicher, dass du vbModeless verwendest, wenn du die Userform aufrufst. Wenn du Show ohne vbModeless verwendest, blockiert die Userform die weitere Ausführung des Codes.

Fehler: Userform zeigt nur "bitte warten".

  • Lösung: Überlege, stattdessen ein Label in deinem Arbeitsblatt zu verwenden. Du kannst ein Label aus der Symbolleiste „Steuerelemente-Toolbox“ in ein Tabellenblatt einfügen und es sichtbar machen.

Alternative Methoden

Eine alternative Methode, um den Fortschritt während einer langen Auswertung anzuzeigen, ist die Verwendung von Label-Steuerelementen auf dem Arbeitsblatt:

  1. Füge ein Label aus der Steuerelemente-Toolbox in dein Arbeitsblatt ein.
  2. Verwende folgenden Code, um das Label sichtbar zu machen:

    Sheets("Tabelle1").Label1.Visible = True
    ' Dein Auswertungscode hier
    Sheets("Tabelle1").Label1.Visible = False

Diese Methode ist besonders nützlich, wenn die Userform nur eine simple Statusmeldung anzeigen soll.


Praktische Beispiele

Hier ist ein einfaches Beispiel für einen VBA-Code, der eine Userform anzeigt und gleichzeitig eine Auswertung durchführt:

Sub AuswertungStarten()
    Load UserFormauswertemeldung
    UserFormauswertemeldung.Show vbModeless
    ' Simuliere eine lange Auswertung
    For i = 1 To 100000
        ' Hier könnte dein Code zur Auswertung stehen
        DoEvents  ' Ermöglicht die Verarbeitung von anderen Ereignissen
    Next i
    Unload UserFormauswertemeldung
End Sub

In diesem Beispiel wird die Userform während eines langen Schleifenprozesses angezeigt, und DoEvents sorgt dafür, dass die Userform aktualisiert wird.


Tipps für Profis

  • Aktualisiere die Userform: Verwende Me.Repaint, um sicherzustellen, dass die Userform während der Ausführung aktualisiert wird.
  • Verwende DoEvents: Dies hilft, die Benutzeroberfläche reaktionsfähig zu halten, während dein Makro läuft.
  • Debugging: Verwende die Möglichkeit, den Excel Quellcode anzuzeigen, um sicherzustellen, dass keine Fehler im Code vorhanden sind.

FAQ: Häufige Fragen

1. Wie kann ich eine Userform in einem VBA-Makro aufrufen? Du kannst eine Userform mit dem Befehl Load und Show vbModeless aufrufen. Dies ermöglicht es, dass der Code weiterhin läuft, während die Userform angezeigt wird.

2. Was ist der Unterschied zwischen Show und Show vbModeless? Show blockiert die weitere Ausführung des Codes, während Show vbModeless dies nicht tut. Daher ist es wichtig, die richtige Option zu wählen, wenn du möchtest, dass der Code weiterläuft.

3. Wie erstelle ich ein Label in Excel? Ein Label kann in der Symbolleiste „Steuerelemente-Toolbox“ gefunden werden. Du kannst es einfach per Drag & Drop in dein Arbeitsblatt einfügen und dann mit VBA sichtbar oder unsichtbar machen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige