nur lasse ich ein anderes Script der Datei laufen, so klappt es nicht mehr.
Logisch. Das andere Script muss erst beendet werden, bevor Excel wieder in den Standby-Modus wechselt, wo auf Events geprüft wird. Du kannst das Ausführen solcher Events aber auch mit einem Befehl erzwingen. Baue dazu in die Schleife deines anderen Scripts den Befehl DoEvents ein. Achtung: Dadurch kann dein Script u.U. nicht unwesentlich langsamer werden, weil das Ausführen dieser Events (u.U. Neuzeichnen usw.) einige Millisekunden dauert. Du solltest den Befehl also nicht bei jedem Schleifendurchgang ausführen sondern nur alle paar Schritte. In meinen Projekten mach ich das meistens so alle 0,25 Sekunden. Das ist ein guter Wert um das Script nicht großartig zu beeinflussen aber gleichzeitig eine gute Performance ohne lange Wartezeit zu haben. Probiers aus.
Dim Start As Single
Start = Timer
Do
'dein Script (irgendwann muss darin die Bedingung auf True gesetzt werden, sonst Dauerschleife!)
'Diese Befehle ans Schleifenende:
If Timer > Start + 0.25 Or Timer < Start Then
DoEvents
Start = Timer
End If
Loop Until Bedingung = True
Gruß Mr. K.
|