Hallo zusammen,
ich habe mir ein kleines Excel-Makro (Excel XP, VBA6) erstellt, mit dem ich ein paar Daten in eine bestimmte Excel-Tabelle laden kann. Ich habe es so gemacht, dass dem Anwender ein Fenster angezeigt wird, in dem er sieht, dass er sich etwas gedulden muss.
Der Hauptquellcode ist also in dem Fenster unter „Private Sub UserForm_Activate()“ abgelegt. Es verläuft also so: User drückt einen Button --> Button startet das UserForm --> UserForm startet die Aufgabe.
Leider ist es in den meisten Fällen so, dass das UserForm während des Vorgangs nicht wie gewünscht anzeigt, dass der Nutzer einen Moment waren soll, sondern es bleibt einfach weiß.
http://mitglied.multimania.de/mrmic3000/nickles/Fenster_leer.JPG
Randbemerkung: Füge ich eine MsgBox(„Hallo“) ein, zeigt das UserForm das an, was es soll. Ich nehme an, dass das daran liegt, dass das Programm einen Moment pausiert.
Ich habe daraufhin folgende Idee aus dem Internet erfolglos ausprobiert:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub UserForm_Activate()
Sleep 100
[… meine Funktionen …]
End Sub
Hat jemand von euch eine Idee, wie man dieses Problem abstellen kann?
Vielen Dank im Voraus!
Grüße,
Mic2004.
Office - Word, Excel und Co. 9.710 Themen, 40.895 Beiträge
Hey,
danke für den Tipp. Das ist glaube ich die beste Lösung. Vorher hatte ich einen "Wait"-Befehl, der anders als die Sleep-Funktion den Sub nicht unterbricht sondern im Hintergrund weiter arbeiten lässt. Da musste ich aber mindestens eine Sekunde warten.
[...]
Wait 1
[...]
Welchen Einfluss hat DoEvents auf meine Sub? Erkaufe ich mir dadurch andere Probleme oder kann ich es theoretisch beliebig oft einbauen? Was genau passiert, wenn die Sub in den Befehl DoEvents hinein läuft?
Grüße und danke,
Mic2004.