Questa e' una macro rischedulata col metodo "OnTime", quindi non e' una macro "in esecuzione" ma che "viene messa periodicamente in esecuzione".
Non vedo pero' dove hai provato a mettere le istruzioni che facevano parte della mia ipotetica soluzione; come pure spero che le istruzioni da
On Errot GoTo 0 in avanti non siano significative.
ho fatto come dici tu ma non succede nulla.....
Se hai messo il break dove ti ho detto e (dopo aver premuto il pulsante, VERO?) non succede niente significa che la macro di evento
CommandButton1_Click non parte: o e' associata male al bottone (molto probabile) o non funziona il tuo vba (molto meno probabile)
Comunque, visto che cosa vuoi fare, non hai bisogno di inserire DoEvents / If StopNow then Exit Sub; basta che modifichi
Application.OnTime Now + TimeValue(var_t), "cambia_colore" in
- Codice: Seleziona tutto
If Not StopNow then Application.OnTime Now + TimeValue(var_t), "cambia_colore"
Ma questo ha come presupposto che riesci col pulsante a manipolare StopNow. Se non ci riesci potresti ripiegare su una cella che se messa a 1 impedisce la ripianificazione dell macro; es se usi M1:
- Codice: Seleziona tutto
If lamp=true Or Thisworkbook.Sheets("NomeFoglio").Range("M1")=0 then
Application.OnTime Now + TimeValue(var_t), "cambia_colore"
Else Thisworkbook.Sheets("NomeFoglio").Range("M1")=0
End If
In questo modo la macro si ferma lasciando nelle celle il colore violaceo invece che Arancione; usa
lamp=False se vuoi fermarti sull' arancione, oppure togli
lamp=true Or se ti basta fermarti in qualsiasi colorazione.
Ciao