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.706 Themen, 40.868 Beiträge
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.
richtig.
Hat jemand von euch eine Idee, wie man dieses Problem abstellen kann?
yo: schmeiss das Sleep... raus und füge in sinnvollen Abständen ein
DoEvents
hinzu.
Das ermöglicht dem System, anstehende andere Aufgaben abzuarbeiten - eben auch, dein Textfeld o.ä. zu aktualisieren.
Wo du das jetzt einsetzt und wie oft, musst du ausprobieren.
Volker
richtig.
Hat jemand von euch eine Idee, wie man dieses Problem abstellen kann?
yo: schmeiss das Sleep... raus und füge in sinnvollen Abständen ein
DoEvents
hinzu.
Das ermöglicht dem System, anstehende andere Aufgaben abzuarbeiten - eben auch, dein Textfeld o.ä. zu aktualisieren.
Wo du das jetzt einsetzt und wie oft, musst du ausprobieren.
Volker