Hallo laika,
Rätsel … irgendwas läuft da intern in der VBA-Steuerung, das
das Ganze blockiert.
Es fehlt das DoEvents.
Das Problem liegt im Aufbau eine Windows-Programmes.
Grundsätzlich werden alle Aktionen als Meldung an ein Programm abgesetzt, also z.B. auch die Anweisung ein Element neu zu zeichnen.
Das, normalerweise versteckte, Hauptprogramm einer Anwendung besteht aus einer Schlaufe, welche eine Meldung aus der Queue nimmt, diese dekodiert und dann die entsprechende Funktion aufruft.
Dein eigentliches Programm ist nur einer dieser Aufrufe.
Besteht nun dein Programm nur aus einer Endloschleife, werden die aufgetretenen Meldungen nicht mehr abgearbeitet du deshalb dein Befehl zum neu Zeichen des Elements nicht ausgeführt.
Mit DoEvents wird die Hauptschleife einzeln aufgerufen und jedesmal eine Meldungen abgearbeitet.
Das Problem dabei ist, dass deine Zeitschleife dadurch nur eine Minimalvorgab ist. ei jedem Aufruf von DoEvens kommt noch die Verarbeitungszeit für die Meldungen hinzu.
Da DoEvents immer nur ein Meldung abarbeitet sollte man so etwas bevorzugen:
For I = 1 To 10
Sleep 10
DoEvents
Next I
oder
For I1 = 1 To 30000
DoEvents
Next I1
MfG Peter(TOO)