Detener un Application On time

Estoy haciendo un procedimiento donde, cuando se activa un Userform, después de 5 segundos, se corre otro macro. Pero quisiera que si le doy click en un botón o en la POR para salirse del formulario, el contador NO SIGA y no se ejecute el macro del On time después de elos 5 segundos. Algo así como detener ese contador y que no se ejecute nada. ¿Cómo lo detengo?
Private Sub Userform1_Activate()
Application.OnTiem Now + TiemSerial(0,0,5), "MiMacro"
End Sub
Lo que quiero es que no se sigan contando los 5 segundos y no se ejecute "MIMacro"

1 Respuesta

Respuesta
2
Lo que dice la ayuda es que deberías volver a llamarlo con todos los datos iguales pero con el parámetro Schedule en False, debería quedarte algo más o menos así
Application.OnTime Now + TimeSerial(0,0,5), "MiMacro", False
Aunque a mi mucho no me gusta esta función, no creo que Excel maneje bien este evento.
Ya le puse la instrucción en el evento "DEACTIVATE" del userform, pero no me funciona
Al activar el userform
Private Sub UserForm_Activate()
Application.OnTime Now + TimeSerial(0, 0, 5), "MiMacro"
End Sub
Al cerrar el userform
Private Sub UserForm_Deactivate()
Application.OnTime Now + TimeSerial(0, 0, 5), "MiMacro", False
End Sub
El contador sigue y me corre "MiMacro"
Lo siento pero es una de las razones que te comentaba por las cuales no me gusta usar ese evento. Según la documentación del excel la forma de hacerlo es como te lo pasé, pero no se por qué a veces falla el procedimiento...
Gracias, investigando un poco más me di cuenta de 2 errores.
1. Donde dice "MiMacro", False hace falta otra coma para dejar vacío el latest time, entonces debería ser "MiMacro',, False.
2. El tiempo que se pone en la instrucción para detener el On Time debe ser EXACTAMENTE igual a la original utilizada en el userform activate. Entonces hay que guardar esa primera hora en una variable, declararla publica y utilizarla en la instrucción del Deactivate.
Private Sub UserForm_Initialize()
Var = Now + TimeSerial(0, 0, 5)
Application.OnTime Var, "MiMacro"
End Sub
Y para terminar el contador se usa
Application.OnTime Var, "MiMacro", , False
Ojo la doble coma y el uso de VAR.
Te comparto el hallazgo. Tu respuesta al menos me oriento hacia donde buscar. Gracias. Terminando de mandarte la respuesta califico y cierro tu ayuda.
Así de paso queda para los que puedan llegar a leer la rpta).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas