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

Info-Box während Makro läuft

Forumthread: Info-Box während Makro läuft

Info-Box während Makro läuft
Julia
Hallo,
ich habe ein Makro welches ca. 2 min läuft.
wie kann ich den Anwender informieren. Eine msgBox ohne Buttons.
Die Box soll erscheinen wenn Makro gestartet wird und verschwinden wenn Makro fertig ist.
Habe es momentan nur in der Status Bar:
Application.StatusBar = "Bitte warten, Daten werden importiert..."
Hätte es aber gerne als MsgBox ohne Buttons
Anzeige
AW: Info-Box während Makro läuft
09.03.2011 10:45:32
Julia
also gibt es definitiv keine Möglichkeit den Anwender zu informieren, außer die Statusbar?
Anzeige
AW: Info-Box während Makro läuft
09.03.2011 10:48:36
Hajo_Zi
Hallo Julia,
warum habe ich ein Beispiel verlinkt, wenn Du Dir das nicht ansiehst?

AW: Info-Box während Makro läuft
09.03.2011 10:54:38
Julia
Sorry, kann die Seite nicht öffnen.
Ist bei uns gesperrt :)
AW: Info-Box während Makro läuft
09.03.2011 10:57:35
Hajo_Zi
Hallo Julia,
benutze einne Userform und starte Dein Makro aus der UserForm.

Anzeige
AW: Info-Box während Makro läuft
09.03.2011 11:22:39
Julia
Sorry Hajo,
versteh ehrlich gesagt nicht was du meinst.
Ich habe ein cmd-Button mit dem ich ein Makro bei Klick ausführe.
Was meinst du mit Userform?
Gruß
Julia
AW: Info-Box während Makro läuft
09.03.2011 11:26:40
Hajo_Zi
Hallo Julia,
im VBA Editor kanst Du eine Userform einfügen, dort kannst Du ein Label drauf machen mit Deinem Hinweis.
Bei Private Sub UserForm_Activate() kannst Du Dein Makro starten und am Ende die Useform schlißen.

Anzeige
AW: Info-Box während Makro läuft
09.03.2011 11:35:55
Reinhard
Hallo Julia,
für mitlesende Kundige, nachfolgend das Fett geschriebene in Prozedur tt ist das noch vorhandene Problem, deshalb Frage noch offen.
ich hab was gebastelt aus Hajos Code und einem Code der kürzlich hier war äh ist.
https://www.herber.de/bbs/user/73905.xls
Wenn du das auch nicht runterladen kannst, mußte halt selbst die Codes einfügen usw.
Das was in tt ist müßtest du in deinen Code des CB einbauen. Wenn du das nicht schaffst nachdem du es eifrig probiert hast zeig ihn halt mal.
im Vb-Editor, Einfügen Userform.
Ziehe dir sie so breit wie du willst und so 1 cder 2 hoch.
Mit F4 erscheinen ihre Eigenschaften, such dir was buntes aus bei BackColor.
Über Werkzeugsymbolleiste ziehst du noch ein Bezeichnungsfeld (Label1) rein.
Dann Doppelklick auf die UF. Beim Code gibst du ein:
Option Explicit
Private Sub UserForm_Activate()
DoEvents
Call tt
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
MsgBox "Hinweisfenster nicht schliessen!", vbCritical
Cancel = 1
End If
End Sub
Private Sub UserForm_Initialize()
Me.Label1.Left = 0
Me.Label1.Height = Me.Height
Me.Label1.Width = 0
Me.Label1.Top = 0
UserForm1.Repaint
End Sub
Jetzt Einfügen---Modul, dort folgenden Code rein:

Option Explicit
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub tt()
' seltsam, so 10 sec nach Beendigung der UF kann man in Editor nichts eingebem
' oder halt oben auf Ausführen--Zurücksetzen klicken! ?
' mehr als DoEvents fällt mir dazu nicht ein :-(
' in Excel kann man sofort nach der UF weiterarbeiten.
Dim N
UserForm2.Show 0
For N = 0 To 150
Call MeinBalken(150, N)
Sleep 100  'Millisekunden
DoEvents
Next N
DoEvents
Sleep 300
Unload UserForm1
DoEvents
End Sub
Sub MeinBalken(ByVal Anzahl As Long, ByVal N As Long)
Dim Breite As Single
Breite = UserForm1.Width / Anzahl * N
With UserForm1
.Label1.Width = Breite
.Caption = "Verlauf " & Format(N / Anzahl, "0.0 %")
.Caption = .Caption & " " & N & " / " & Anzahl
.Repaint
End With
End Sub

Anzeige
Frage noch offen wegen Fehler in meinem Code owT
09.03.2011 12:43:09
Reinhard


Aargs, jetzt ist sie offen :-) owT
09.03.2011 12:44:33
Reinhard


AW: Aargs, jetzt ist sie offen :-) owT
09.03.2011 13:19:45
Hajo_Zi
Hallo Reinhard,
lasse doch Julia entscheiden ob offen. Neben Deiner Variante wurde auch 3 andere Lösungen vorgschlagen.
Gruß Hajo
Anzeige
AW: Aargs, jetzt ist sie offen :-) owT
09.03.2011 16:36:05
Reinhard
Hallo Hajo,
wer ist Julia? *gg*
Mir geht es um meinen Code allein. Wenn der klappt, hat ja noch ein Problem wie beschrieben, dann kann sie den natürlich benutzen.
Ansonsten hättest du Recht, Lösungen hat sie, aber noch unklar ist ob sie mit denen wo ein Download drinnen ist was anfangen kann bei ihren Firmen sicherheitseinstellungen.
Ich wollte wegen meiner Nachfrage zu meinem Code keine neue Beitragsfolge aufmachen, bin aber interessiert wodran da was hängt mit der UF bzw. danach die 10 Sec lang.
Gruß
Reinhard
Anzeige
AW: Fragesteler
09.03.2011 16:37:50
Hajo_ZI
Hallo Reinhard,
Julia hat die Frage gestellt.
Gruß Hajo
AW: Info-Box während Makro läuft
09.03.2011 11:43:27
ing.grohn
Hallo Julia,
schreib doch einfach einen Zählerwert in eine Zelle, die der Anwender sieht .
Der BS flackert dann zwar ein wenig.
Aber, man sieht, es passiert was
Mit freundlichen Grüßen
Albrecht
Anzeige
AW: kein guter Tipp
09.03.2011 11:54:18
ing.grohn
Hallo Julia,
mein Tipp war nicht gut.
Geht ja nur, wenn sich Dinge im Makro wiederholen (Schleife).
Wenn das Makro linear durchläuft, ist nichts mit Zählen!
Tut mir leid.
Mit freundlichen Grüßen
Albrecht
AW: Info-Box während Makro läuft
09.03.2011 20:32:38
Reinhard
Hallo Julia,
wenn dir meine Lösung gefällt, ändere das mal im Code in

Private Sub UserForm_Activate()
DoEvents
'Call tt
End Sub
dann klappt das in meiner datei.
Hast du noch Interesse? Du bist so schweigsam.
Gruß
Reinhard
Anzeige
AW: Info-Box während Makro läuft
09.03.2011 10:32:15
Martin
Vielleicht hilft Dir mein Beitrag, um eine andere Lösung zu erhalten:
Du kannst per Makro die Zellen einfärben bzw. Texte in Zellen einfügen. Das ließe sich am Anfang des Makros einprogrammieren, am Ende wieder rückgängig machen.
So kannst Du einen Hinweis geben. Allerdings kann ich Dir den VBA-Code dafür nicht geben, da ich selbst nicht der VBA-Experte bin.
Grüße
Martin
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Info-Box während eines Makros in Excel


Schritt-für-Schritt-Anleitung

Um eine Info-Box anzuzeigen, während ein Makro läuft, kannst Du eine UserForm in VBA erstellen. Hier sind die Schritte:

  1. Öffne den VBA-Editor in Excel (drücke ALT + F11).
  2. Klicke auf "Einfügen" und wähle "UserForm".
  3. Füge ein Label hinzu, um Deine Nachricht anzuzeigen.
  4. Klicke doppelt auf die UserForm, um den Code-Editor zu öffnen.
  5. Füge den folgenden Code ein:
Option Explicit

Private Sub UserForm_Activate()
    DoEvents
    ' Hier wird das Makro aufgerufen
    Call DeinMakro
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then
        MsgBox "Hinweisfenster nicht schließen!", vbCritical
        Cancel = 1
    End If
End Sub

Private Sub UserForm_Initialize()
    Me.Label1.Caption = "Bitte warten, das Makro läuft..."
End Sub
  1. Erstelle ein neues Modul und füge den folgenden Code ein, der Dein Makro ausführt:
Sub DeinMakro()
    UserForm1.Show 0
    ' Hier kommt der Code Deines Makros
    ' Beispiel einer langen Schleife
    Dim i As Long
    For i = 1 To 1000000
        ' Lange Berechnung
    Next i
    Unload UserForm1
End Sub
  1. Starte Dein Makro, indem Du den Command Button verwendest.

Häufige Fehler und Lösungen

  • Fehler: UserForm erscheint nicht
    Stelle sicher, dass Du UserForm1.Show 0 in Deinem Makro richtig aufrufst.

  • Fehler: UserForm schließt sofort
    Überprüfe den Code in UserForm_QueryClose. Der Code sollte verhindern, dass die UserForm geschlossen wird.

  • Fehler: Info-Box zeigt nichts an
    Überprüfe, ob das Label korrekt initialisiert wurde und ob die UserForm angezeigt wird, bevor das lange Makro läuft.


Alternative Methoden

Falls Du keine UserForm verwenden möchtest, kannst Du auch einfache Methoden nutzen:

  • Status Bar: Nutze die Status Bar, um Informationen anzuzeigen:
Application.StatusBar = "Bitte warten, Daten werden importiert..."
  • Zelleninhalt ändern: Ändere den Inhalt einer Zelle, um den Anwender zu informieren, z.B.:
Cells(1, 1).Value = "Das Makro läuft..."
  • Textfeld einfügen: Füge ein Textfeld in das Arbeitsblatt ein, um Informationen anzuzeigen.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du die UserForm für eine lange Schleife verwenden kannst:

Sub BeispielMakro()
    UserForm1.Show 0
    Dim i As Long
    For i = 1 To 100000
        ' Simuliere eine verzögerte Aufgabe
        DoEvents  ' Ermöglicht der UserForm zu reagieren
    Next i
    Unload UserForm1
End Sub

Tipps für Profis

  • Nutze die DoEvents-Funktion, um sicherzustellen, dass die UserForm während des Makrolaufs reagiert.
  • Experimentiere mit der Gestaltung der UserForm, um die Benutzererfahrung zu verbessern.
  • Verwende Sleep aus der Windows-API, um Wartezeiten zu simulieren, wenn Du eine Verzögerung benötigst.

FAQ: Häufige Fragen

1. Wie kann ich die Info-Box anpassen?
Du kannst die Eigenschaften der UserForm im VBA-Editor anpassen, um die Farben, Größe und Texte zu ändern.

2. Funktioniert das in allen Excel-Versionen?
Ja, die beschriebenen Methoden sollten in den meisten modernen Excel-Versionen funktionieren, einschließlich Excel 2007 und neuer.

3. Kann ich eine HTML-Info-Box verwenden?
Direkt in Excel ist dies nicht möglich, aber Du kannst VBA verwenden, um einen ähnlichen Effekt mit einer UserForm zu erzielen.

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