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

Einblendung ohne Code-Unterbrechung

Forumthread: Einblendung ohne Code-Unterbrechung

Einblendung ohne Code-Unterbrechung
12.09.2006 18:18:35
Bodo Jensen
Wie können während der Ausführung eines längeren VBA-Codes Nachrichten zum jeweiligen Bearbeitungsstand eingeblendet werden, ohne dass die Code-Ausführung stoppt? Habe bisher die Nachrichten in eine Zelle eingeblendet. Sollte aber etwas komfortabler sein durch ein "Aufpoppen". Habe es mit Userform und MsgBox versucht, aber dann stoppt eben die Programmausführung.
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einblendung ohne Code-Unterbrechung
12.09.2006 18:25:24
Micha
Hallo Bodo,

Sub test()
UserForm1.Show (0)
MsgBox "Hallo"
End Sub

teste mal.....
Micha
OT Userform bleibt weiß
12.09.2006 18:34:49
Reinhard
Hallo Micha,
die UF wird angezeigt, aber weiß, erst nach der Schleife erscheint der Label!?
Was tun?
Option Explicit
Sub test()
Dim n As Long
'DoEvents
UserForm1.Show 0
UserForm1.Label1.Caption = "Beliebiger Text"
[a1] = 0
For n = 1 To 2000
[a1] = [a1] + 1
Next n
End Sub

Danke ^ Gruß
Reinhard
Anzeige
AW: OT Userform bleibt weiß
12.09.2006 19:10:38
Micha
Hallo,

Sub test()
Dim n As Long
'DoEvents
UserForm1.Show 0
UserForm1.Label1.Caption = "Beliebiger Text"
'dadurch hat die Form Zeit sich zu aktuallisieren
Do Events
[a1] = 0
For n = 1 To 2000
[a1] = [a1] + 1
Next n
End Sub

Micha
AW: OT Userform bleibt weiß
13.09.2006 05:20:00
Reinhard
Hallo Micha,
ja, so klappts.
Gruß
Reinhard
Anzeige
AW: Einblendung ohne Code-Unterbrechung
12.09.2006 18:44:05
Matthias G
Hallo Bodo,
da hab ich vor einiger Zeit mal was entworfen, eine Userform, die Infos anzeigt.
hier die Datei:
https://www.herber.de/bbs/user/36621.xls
Im Kommentar der Demoprozedur Test() ist beschrieben, wie es funktioniert.
Viel Spaß damit,
Matthias
Anzeige
AW: Einblendung ohne Code-Unterbrechung
12.09.2006 19:08:23
Bodo Jensen
Hallo Matthias,
die Einblendungen deiner Infos erfolgen zeitabhängig, ich habe vor es nach dem jeweiligen Abarbeitungsstand des VBA-Codes anzeigen zu lassen.
Z.B.: 1. nachricht : Daten werden übernommen
2. nachricht: Bereinigung der Daten
3. Nachricht: Erfolgreich abgeschlossen
Gruß Bodo
Anzeige
AW: Einblendung ohne Code-Unterbrechung
12.09.2006 19:41:45
Matthias G
Hallo Bodo,
die Einblendungen deiner Infos erfolgen zeitabhängig...
Nein, die .Wait-Anweisung dient doch nur zur Demonstration!
Füge in deinem Code einfach diese Befehle ein:
UF_Log.Show 'zu Beginn
UF_Log.Add "Daten werden übernommen"
UF_Log.Warten
UF_Log.Stopp 'am Ende
Gruß Matthias
Anzeige
AW: Einblendung ohne Code-Unterbrechung
12.09.2006 19:47:11
Bodo Jensen
Danke Matthias
AW: Einblendung ohne Code-Unterbrechung
12.09.2006 18:57:50
Bodo Jensen
Hallo Leute,
vielen Dank, dass ihr euch so schnell gemeldet habt. So ganz das richtige ist noch nicht, weil die Meldungen immer erst wieder weggeklickt werden müssen. Schön wäre es, wenn eine Meldung von der anderen abgelöst werden würde und nur die Meldung der Fertigstellung am Schluß stehen bleibt.
Anzeige
AW: Einblendung ohne Code-Unterbrechung
12.09.2006 21:09:48
Peter Feustel
Hallo Bodo,
Application.StatusBar = "die Daten werden übertragen" oder
Application.StatusBar = "es wurden " & Anzahl & " Sätze übertragen."
und am Ende
Application.StatusBar = ""
Da kannst du alles an den Benutzer mitgeben, was er wissen soll.
Wegklicken muss niemand gar nichts.
In der Status-Zeile werden deine Infos ausgegeben.
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: Einblendung ohne Code-Unterbrechung
12.09.2006 21:34:02
Matthias G
Hallo Peter,
und am Ende
Application.StatusBar = ""

Um die Kontrolle der Statusbar wieder an Excel zu übergeben, braucht man
Application.StatusBar = False
Gruß Matthias
;
Anzeige

Infobox / Tutorial

Einblendung ohne Code-Unterbrechung in VBA


Schritt-für-Schritt-Anleitung

Um während der Ausführung eines längeren VBA-Codes Nachrichten anzuzeigen, ohne die Programmausführung zu stoppen, kannst du eine UserForm verwenden. Hier ist eine einfache Anleitung:

  1. UserForm erstellen:

    • Öffne den VBA-Editor (ALT + F11).
    • Klicke auf „Einfügen“ und wähle „UserForm“.
    • Füge ein Label hinzu, um Nachrichten anzuzeigen.
  2. Code zur Anzeige der UserForm:

    • Verwende den folgenden Code in deinem Modul:
      Sub test()
      UserForm1.Show 0
      UserForm1.Label1.Caption = "Daten werden übernommen"
      DoEvents ' Ermöglicht die Aktualisierung der UserForm
      ' Füge hier deinen Code ein
      UserForm1.Label1.Caption = "Daten erfolgreich übertragen"
      ' Code für das Ende
      UserForm1.Hide
      End Sub
  3. UserForm schließen:

    • Du kannst die UserForm am Ende deiner Prozedur ausblenden, um die Meldung zu beenden.

Häufige Fehler und Lösungen

  • UserForm bleibt weiß: Wenn deine UserForm während der Ausführung leer bleibt, stelle sicher, dass du DoEvents in deinem Code verwendest, um der UserForm die Möglichkeit zu geben, sich zu aktualisieren:

    DoEvents
  • Meldungen müssen bestätigt werden: Wenn du MsgBox verwendest, stoppt die Ausführung. Stattdessen solltest du die UserForm verwenden, um Meldungen ohne Bestätigung anzuzeigen.


Alternative Methoden

Falls du keine UserForm verwenden möchtest, gibt es alternative Methoden, um Informationen anzuzeigen:

  • Statusleiste verwenden:

    Application.StatusBar = "Daten werden übertragen"
    ' Füge hier deinen Code ein
    Application.StatusBar = False ' Zurücksetzen der Statusleiste
  • Infobox ohne VBA: Eine einfache Möglichkeit, Informationen zu zeigen, besteht darin, die Statuszeile von Excel zu verwenden, wie im vorherigen Beispiel beschrieben.


Praktische Beispiele

Hier sind einige Beispiele, wie du die UserForm effektiv nutzen kannst:

  1. Datenübertragung:

    Sub DatenTransfer()
       UserForm1.Show 0
       UserForm1.Label1.Caption = "Daten werden übernommen"
       DoEvents
       ' Simuliere Datenverarbeitung
       For i = 1 To 1000000
           ' Datenverarbeitung hier
       Next i
       UserForm1.Label1.Caption = "Daten erfolgreich übertragen"
       UserForm1.Hide
    End Sub
  2. Statusmeldungen:

    Sub Prozess()
       UserForm1.Show 0
       UserForm1.Label1.Caption = "Starte Prozess..."
       DoEvents
       ' Prozesscode
       UserForm1.Label1.Caption = "Prozess abgeschlossen"
       UserForm1.Hide
    End Sub

Tipps für Profis

  • Nutze DoEvents regelmäßig, um sicherzustellen, dass die UserForm aktuell bleibt und Eingaben vom Benutzer verarbeitet werden können.
  • Wenn du die UserForm nicht manuell schließen möchtest, kannst du sie am Ende deines Codes automatisch ausblenden, um die Benutzeroberfläche sauber zu halten.
  • Vermeide die Verwendung von MsgBox, um Unterbrechungen in deinem Code zu verhindern; setze stattdessen auf eine Infobox oder die Statuszeile.

FAQ: Häufige Fragen

1. Wie kann ich eine Infobox in VBA ohne Bestätigung einblenden? Verwende eine UserForm oder die Statuszeile, um Informationen anzuzeigen, ohne dass eine Bestätigung erforderlich ist.

2. Gibt es eine Möglichkeit, Pop-ups ohne VBA zu erstellen? Ja, du kannst die Statuszeile von Excel nutzen, um Informationen anzuzeigen, ohne ein Pop-up zu erzeugen.

3. Wie kann ich die UserForm während einer Schleife aktualisieren? Verwende DoEvents, um sicherzustellen, dass die UserForm während der Ausführung aktualisiert wird.

4. Kann ich mehrere Nachrichten nacheinander anzeigen? Ja, aktualisiere einfach den Text des Labels in der UserForm, um verschiedene Nachrichten nacheinander anzuzeigen.

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