Deter reloj después de cerrar el formulario

Tengo un formulario en el que se muestra la hora (en un label) en tiempo real ( reloj) usando la aplicación OnTime. El problema que tengo es que la macro sigue en ejecución aún después de cierrar el formulario. Lo que quiero es Detener la aplicación OnTime inmediatamente después de cerrar el formulario. El código con el que funciona el reloj es el siguiente:

En el formulario:

Private Sub UserForm_Activate()

Label1 = Time

End Sub

———————-

En un Módulo :

Sub Reloj()

frmRejoj.Label1.Caption = Time

Tiempo

End Sub

————————-

Sub Tiempo()

Application.OnTime Now + TimeValue(“00:00:01”), “Reloj”

End Sub

Respuesta
1

Revisa la siguiente respuesta, ahí explico como detener la macro

Modificar Parpadeo dependiendo de lo diga la Celda

Avísame si tienes dudas.

Muchas gracias Dante, estuve intentando hacerlo tomando como referencia el ejemplo anterior pero no me sale. Sería mucho pedirte que por favor me apoyes.  Según entiendo del ejemplo es que tengo que llenar una celda para poder finalizar la macro. Estuve intentando pero no logro conseguirlo.

Quedaría solamente lo siguiente en el módulo:

Sub Reloj()
    frmRejoj.Label1.Caption = Time
    frmRejoj.ahora = Now
    Application.OnTime frmRejoj.ahora + TimeValue("00:00:01"), "Reloj"
End Sub

En el código del userform:

Public ahora
'
Private Sub UserForm_Activate()
    Label1 = Time
    Call Reloj
End Sub
'
Private Sub UserForm_Terminate()
    Application.OnTime ahora + TimeValue("00:00:01"), "Reloj", , False
End Sub
'
Private Sub CommandButton1_Click()
    Unload Me
End Sub

Prueba y me comentas.

1 respuesta más de otro experto

Respuesta
1

En general siempre el uso de Application. Ontime genera cierta "inestabilidad" (como ya te has dado cuenta), incluso a veces hace que los archivos se abran "solo" o mantiene "parpadeando" el Excel.

Una forma de (intentar) detenerlo es algo como lo siguiente:

Sub Detener_reloj()
'Detiene el "OnTime"
Application.OnTime EarliestTime:=Now + TimeValue("00:00:01"), _
        Procedure:="Reloj", _
        Schedule:=False
End Sub

Usa algo así al cerrar tu formulario.

Abraham Valencia

Muchas Gracias Abraham intente con tu propuesta pero la macro sigue en ejecución.

En mi ejemplo en donde dice "Procedure" en mi ejemplo dice "Reloj", tú debes colocar "Tiempo". Quizá es solo eso.

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas