Controlar temporizador con un solo botón

Tengo un temporizador en una celda de excel. ¿Cómo puedo hacer para iniciarlo y detenerlo con el mismo botón? Es decir, que cuando aprieto el botón e inicio el temporizador, al apretar el mismo botón nuevamente este se detenga.

1 respuesta

Respuesta
1
primero que nada supongo que lo tienes con un timer (supongo por que no diste mas informacion al respecto) entonces lo que puedes hacer es una subrutina en la cual inicies el conteo y otra para que la detengas
y asi en la parte del timer cuando este presione el boton asignas una variable con un valor booleano o si lo prefieres 1/2 para que cuando lo presiones mediante un if comparas que valor tiene asi lo mandas a la subrutina adecuada para iniciar el conteo y cundo lo presione otra vez con otro if comparas si tiene el valor anterior le asignas el segundo valor asi llama a la subrtuina de parar
de manera mas grafica quedaria asi
sub IniciarConteo
sub PararConteo
button.click
if operacion=0 then
             operacion=1
             iniciarConteo
elseif operacion=1 then
            operacion=0
            PararConteo
Espero me haya explicado bien y te sirva para realizar lo que necesitas y si no pues me avisas y buscamos una mejor solución pero se más especifico en tu problema
Hola experto, disculpa por el tiempo de inactividad, pero es que he estado muy ocupado. Con respecto a mi anterior pregunta, si, lo que tengo es un timer. Este aparece en la celda B2 de la hoja 1. el macro que inicia el timer se llama "crono", mientras que el que lo detiene se llama justamente "detener" (muy pensado el nombre). Tu idea es la correcta, una condición para iniciarlo y otra para detenerlo con el mismo botón. Pero mi duda es ¿En qué parte del proyecto de VB coloco la subrutina? Es decir, ¿en un Módulo o en algunos de los objetos?
Pues yo te recomendaría que dentro del modulo coloques la rutina principal y las secundarias para que de ahí mismo las jales a el botón solo que las secundarias las colocas como privadas para que solo se vea la principal
Hola solnegro, he probado colocar la subrutina como creo me dijiste y no ha funcionado, al apretar el botón por segunda vez el timer avanza 2 segundos en 1 segundo de tiempo. Al código lo he colocado en la hoja 1 de vb, donde se programan los controles activex. Para que tengas una idea del proyecto, te copio el código del timer:
Dim tiempo As Date
Sub crono()
tiempo = Now + TimeValue("00:00:01")
Application.OnTime tiempo, "calcular"
End Sub
Sub calcular()
Range("b2").Value = Range("b2").Value - 1.15740740740805E-05
If Range("b2").Value <= 0 Then
Range("b2") = "00:00:00"
End If
Call crono
End Sub
Sub detener()
Application.OnTime EarliestTime:=tiempo, _
Procedure:="calcular", Schedule:=False
End Sub
Dicho código está colocado en un módulo de VB.
perdon por la demora en base a lo que mandaste ?pues yo te recomendaria hacerlo asi es mas sencillo
dim op as byte,dtHoraSiguiente As Date
Sub crono()
    If op = 0 Then
        op = 1
        Call IniciarPonerHora
    Else
        op = 0
        Call DetenerPonerHora
    End If
End Sub
Sub IniciarPonerHora()
Worksheets("Hoja1").Range("A1") = Now() - Int(Now())
dtHoraSiguiente = Now + TimeValue("00:00:01")
Application.OnTime dtHoraSiguiente, "IniciarPonerHora"
Cells(3, 2) = "Iniciado"
End Sub
Sub DetenerPonerHora()
On Error Resume Next
Application.OnTime dtHoraSiguiente, "IniciarPonerHora", , False
Cells(3, 2) = "Detenido"
End Sub
Y ya colocas en el botón el valor de crono
espero haber sido de ayuda y si no te es útil favor házmelo saber y te buscamos otra solución

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas