PDA

Vollständige Version anzeigen : MsgBox während Makro läuft


Mexcel
03.07.2014, 10:18
Guten Morgen,

und zwar habe ich ein umfangreicheres Makro, welches verschiedene Vergleichsoperationen sowie den Aufbau eines TreeViews enthält. Da dies doch eine längere Zeit in Anspruch nimmt, würde ich gerne während der "Wartezeit" eine Message Box einblenden lassen mit z.B. "Bitte Warten".

Die Beispiele, die ich hierzu im Netz gefunden habe, beziehen sich alle auf einfaches Einfügen von Werten, sodass eine Zählschleife dort ausreichend ist. Meine Datengrundlage ist da doch etwas komplexer.

Kann mir da jemand helfen?

Vielen Dank für Eure Hilfe.:)

Gruß
Mexcel

Hajo_Zi
03.07.2014, 10:23
eine MsgBox hält das Makro an, benutze eine UserForm.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Mexcel
03.07.2014, 11:16
Danke Hajo für die schnelle Antwort. Bin gerade leider nicht am Rechner.
Würde es so in etwa aussehen?


Private Sub CommandButton_Click()

UserForm1.Show

....Code, der mit der UserForm1 "überbrückt" werden soll....

Unload UserForm1

End Sub



Oder hab ich es mir da zu einfach gemacht?^^

Gruß,
Mexcel

Hajo_Zi
03.07.2014, 11:20
ja genauso
oder aufwendiger
Fortschrittsanzeige (http://hajo-excel.de/chCounter3/getfile.php?id=118)

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Uwi63
03.07.2014, 11:28
Hallo Mexcel,

was auch geht, ist mit der Statusbar zu arbeiten, man muss zwar genau hinsehen, aber es informiert einen auch um zu sehen wie weit das Makro ist ...



Application.DisplayStatusBar = True
Application.StatusBar = "Makro läuft!"
'...
Application.StatusBar = "... macht jetzt dies ()"
'...
Application.StatusBar = "... macht jetzt das ..."
'...
Application.StatusBar = "fertig ;-)"
Application.DisplayStatusBar = False

Mexcel
03.07.2014, 11:38
Hab es mal ausprobiert. Geht leider nicht.

Ich muss erst UserForm1 beenden damit die restliche (Berechnungs-) Prozess startet. Wo liegt da der Fehler?

Hajo_Zi
03.07.2014, 11:41
es ist immer Klasse wenn man die Person anspricht, der man was mittteilen will. Das ist eben der entscheidende Vorteil, wenn eine Name unter dem Beitrag steht, man hat eine Namen zum ansprechen.
Da nun unklar ist wen Du meinst.
Kann man nur allgemein schreiben nur wenige sehe Deine Datei.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Mexcel
03.07.2014, 11:47
Sorry, hab den Beitrag von Uwe nicht gesehen.

Ich meinte den ersten Beitrag von dir, Hajo.

Gruß,
Mexcel

Hajo_Zi
03.07.2014, 11:49
im ersten Beitrag von mir steht nur das Msgbox das Makro anhält.
Ich sehe es also richtig Du liest meine Beiträge nicht komplett (#7).
Ich bin dann raus.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Mexcel
03.07.2014, 11:54
Okay, den zweiten. ja genauso

Hab mich verschrieben.

Also, dass man einfach

UserForm1.Show

und

Unload UserForm1

in den Sub schreibt.

Dies funktioniert leider nicht.

Uwi63
03.07.2014, 12:39
Hallo Mexcel,

wenn das mit der Statuszeile nicht ausreicht hab' ich ansonsten auch schon mal mit Popups gearbeitet, die automatisch wieder verschwinden:

<FONT FACE="Courier New,FixedSys"Size=2>
<FONT COLOR=#0000FF>&nbsp;</FONT><FONT COLOR=#000000>&nbsp;</FONT><FONT COLOR=#008000>&nbsp;</FONT><FONT COLOR=#C00000>&nbsp;</FONT><FONT COLOR=#C0C0C0>&nbsp;&nbsp;</FONT><FONT COLOR=#000000><BR>
</FONT><FONT COLOR=#0000FF>Dim</FONT><FONT COLOR=#000000>&nbsp;WshShell&nbsp;</FONT><FONT COLOR=#0000FF>As</FONT><FONT COLOR=#000000>&nbsp;</FONT><FONT COLOR=#0000FF>Object</FONT><FONT COLOR=#000000><BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;</FONT><FONT COLOR=#0000FF>Set</FONT><FONT COLOR=#000000>&nbsp;wshshell&nbsp;=&nbsp;CreateObject("Wscript.shell")<BR>
&nbsp;&nbsp;&nbsp;&nbsp;wshshell.popup&nbsp;"Fenster&nbsp;verschwindet&nbsp;nach&nbsp;1&nbsp;Sekunde&nbsp;wieder&nbsp;!",&nbsp;1,&nbsp;"...Status-Info...(Titel)"&nbsp;</FONT><FONT COLOR=#008000>'...<BR>
'...<BR>
</FONT><FONT COLOR=#0000FF>Set</FONT><FONT COLOR=#000000>&nbsp;wshshell&nbsp;=&nbsp;</FONT><FONT COLOR=#0000FF>Nothing</FONT><FONT COLOR=#000000>&nbsp;<BR>
</FONT>
</FONT>

hary
03.07.2014, 12:46
Moin
Stell in der Eigenschaft: ShowModal auf False
gruss hary

Mexcel
03.07.2014, 15:08
@Uwe:
Die Statusleiste ist bei mir nicht mehr sichtbar, da die Arbeitsmappe ausgeblendet wird und nur eine UserForm geöffnet ist. Für Popups reichen meine Kenntnisse leider nicht aus.

@Hary:
Wenn ich die Eigenschaft ShowModal der UserForm1 auf False setze wird mir folgender Fehler angezeigt:
"Ungebundenes Formular kann nicht angezeigt werden, während gebundenes Formular angezeigt wird"

Gruß,
Mexcel

IngGi
03.07.2014, 15:30
Hallo Mexcel,

wenn du bereits ein Benutzerformular geöffnet hast, brauchst du ja nur eine Textbox mit einer entsprechenden Nachricht dort einfügen. Ein weiteres Benutzerformular ist überflüssig. Mach die Textbox standardmäßig unsichtbar und blende sie dann nach Bedarf ein/aus.

Gruß Ingolf

Mexcel
03.07.2014, 19:54
Danke Ingolf für den Tipp :)

Hab da aber noch ein Problem mit dem Einblenden und Ausblenden.

Ich habe die Eigenschaft Visible von TextBox1 auf False gesetzt.
Jetzt würde ich die TextBox1 mit dem unteren Sub beim klicken einblenden und wenn der Code durchlaufen wurde wieder ausblenden.

Private Sub CommandButton_Click()

TextBox1.Visible = True

....Code...

TextBox1.Visible = False

End Sub


Es wird die Textbox aber leider nicht vor dem Code-Durchlauf sichtbar, sondern erst danach (und logischerweise dann auch wieder direkt unsichtbar).

Wo liegt da noch der Fehler?

Gruß
Mexcel