Se puede hacer un Cronometro en Excel?

Para Dante Amor

Buenas

He visto entre sus respuestas un reloj con cuenta regresiva dentro de un userform. Me ha venido a la cabeza que si es posible hacer un Cronometro el cual tenga segundos y milésimas de segundo.

Si fuera posible ya entraríamos en profundidad en sus características.

1 respuesta

Respuesta
1

H o l a:

Básicamente este sería el código:

Dim StopTimer As Boolean
Dim reiniciar As Boolean
'
Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
    'Start the timer
    Dim EndTime As Double
    StopTimer = False
    tiempo = Split(lbl_reloj, ":")
    If UBound(tiempo) < 2 Then
        reiniciar = False
    End If
    If reiniciar Then
        hora = tiempo(0)
        minu = tiempo(1)
        segu = tiempo(2)
        reiniciar = False
    Else
        hora = [B2]
        minu = [C2]
        segu = [D2]
    End If
    Me.lbl_reloj.Font.Name = "Arial"
    Me.lbl_reloj.Font.Size = 13
    Do
        If EndTime - Now < 0 Then
            If hora = 0 And minu = 0 And segu = 0 Then
                minu = 45
            End If
            EndTime = Now + TimeSerial(hora, minu, segu)
        End If
        lbl_reloj = EndTime - Now
        [A2] = EndTime - Now
        lbl_reloj = Format([A2], "hh:mm:ss") & "." & Format(1000 - (Timer - Int(Timer)) * 1000, "000")
        tiempo = Split(lbl_reloj, ":")
        If tiempo(0) = "00" And tiempo(1) = "00" And tiempo(2) = "00" Then
            StopTimer = True
            MsgBox "el tiempo concluyó", vbExclamation, "RELOJ"
            Unload Me
        End If
        DoEvents
    Loop Until StopTimer
End Sub

Funciona con un botón y un label en un formulario.

En la hoja tienes que poner esta información:

Tienes que renombrar el label como lbl_reloj

Esta es la macro actualizada>

Dim StopTimer As Boolean
Dim reiniciar As Boolean
'
Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
    'Start the timer
    Dim EndTime As Double
    StopTimer = False
    tiempo = Split(lbl_reloj, ":")
    If UBound(tiempo) < 2 Then
        reiniciar = False
    End If
    If reiniciar Then
        hora = tiempo(0)
        minu = tiempo(1)
        segu = tiempo(2)
        reiniciar = False
    Else
        hora = [B2]
        minu = [C2]
        segu = [D2]
    End If
    Me.lbl_reloj.Font.Name = "Arial"
    Me.lbl_reloj.Font.Size = 13
    Do
        If EndTime - Now < 0 Then
            If hora = 0 And minu = 0 And segu = 0 Then
                minu = 45
            End If
            EndTime = Now + TimeSerial(hora, minu, segu)
        End If
        lbl_reloj = EndTime - Now
        [A2] = EndTime - Now
        lbl_reloj = Format([A2], "hh:mm:ss") & "." & Format(1000 - (Timer - Int(Timer)) * 1000, "000")
        tiempo = Split(lbl_reloj, ":")
        If tiempo(0) = "00" And tiempo(1) = "00" And Left(tiempo(2), 2) = "00" Then
            lbl_reloj = "00:00:00.000"
            StopTimer = True
            MsgBox "el tiempo concluyó", vbExclamation, "RELOJ"
            Unload Me
        End If
        DoEvents
    Loop Until StopTimer
End Sub
Private Sub CommandButton2_Click()
StopTimer = True
End Sub

Genial!!!!!!!!

Perdón por no plantearlo al 100% desde el principio pero pensé que no seria posible así que lancé la pregunta de manera general, vamos con las particularidades.

Pensemos en una carrera de F1, Nascar, Indy...., bien lo que pretendo es gestionar una carrera de este tipo y para ello:

1º El tiempo debe ir en aumento.

2º En un textbox de aportará el numero de vueltas que tendrá la carrera.

3º El tiempo de cada vuelta se deberá ir volcando a un listbox, el mismo botón que inicia el cronometro sera el que de los parciales.

4º Todo ello debe ser en formato numérico, es decir, si es un minuto que aparezca 60 segundos y sus milésimas correspondientes.

Para que se haga una idea es replicar esta App móvil: https://www.youtube.com/watch?v=-HGsrjoeQnw  . 

Le envío el formulario rediseñado para este fin

Muchas Gracias

Saludos

Realizar el cronómetro hacia atrás es posible con segundos y milisegundos, podrías valorar la respuesta y crear una nueva con todo la información que necesitas.

Si bien, es posible realizarlo, en excel, a pesar de que es una hoja de cálculo; en cuanto a cronómetros, está un tanto limitado, tiene que desarrollarse el código apoyándose en las celdas y las funciones de hora del propio excel.

Plantea la pregunta y vemos cómo hacemos para ir registrando cada vuelta, supongo que tendrás que presionar alguna tecla para saber que ya se cumplió la vuelta y realizar el registro, también deberás especificar cómo hacer que se registre el tiempo de cada vuelta.

S a l u d o s

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas