Gestión de carreras en Userform

Para el Sr. Dante Amor

Siguiendo con mi proyecto he aqui mi siguiente propuesta.

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

1º En un userform ponemos un contador de tiempo en segundos y milesimas de segundos (El tiempo debe ir en aumento).

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

3º Como en un cronometro normal y corriente, habrá un botón de iniciar que a su vez dará los tiempos parciales por vuelta.

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

5º 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 

La manera de contabilizar las vueltas es con el botón, tengo un sistema diseñado para cuando el coche pase haga click.

1 Respuesta

Respuesta
1

 H o l a:

Te anexo el código

Dim StopTimer As Boolean
Dim reiniciar As Boolean
Dim vuelta
'
Private Sub CommandButton1_Click()
'Por.Dante Amor
    StopTimer = False
    If reiniciar Then
        vuelta = vuelta + 1
        If vuelta = Val(TextBox1) Then
            StopTimer = True
            CommandButton1.Caption = "Iniciar"
            TextBox1.SetFocus
        End If
        If vuelta > Val(TextBox1) Then
            StopTimer = True
            reiniciar = False
            CommandButton1.Caption = "Iniciar"
            vuelta = 0
            ListBox1.Clear
            Exit Sub
        End If
        ListBox1.AddItem vuelta
        ListBox1.List(ListBox1.ListCount - 1, 1) = lbl_reloj
    Else
        CommandButton1.Caption = "Parcial"
    End If
    reiniciar = True
    Do
        lbl_reloj = Format(Now, "hh:mm:ss") & "." & Format((Timer - Int(Timer)) * 1000, "000")
        DoEvents
    Loop Until StopTimer
End Sub
'
Private Sub CommandButton2_Click()
'Por.Dante Amor
    StopTimer = True
    Unload Me
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    lbl_reloj.Font.Name = "Arial"
    lbl_reloj.Font.Size = 13
    ListBox1.ColumnCount = 2
End Sub
'
Private Sub UserForm_Terminate()
    StopTimer = True
End Sub

Este es el formulario:


Muchas Gracias. Le hago un apunte a ver si lo podemos implementar.

Por lo que veo lo que captura con cada click es la hora en ese instante, con lo cual para averiguar el tiempo que hay de un click a otro sera una resta. Hasta ahí bien, el problema es calcular el tiempo de la vuelta 1 (espacio entre el click de inicio y el segundo click), con lo cual es necesario que el primer dato que incluya al listbox es la hora de Salida (primer click).

Lo he intentado creando una variable (Inicio) y con un condicional dentro del commandbutton1 pero no logro que lo haga, en este terreno estoy muy perdido.

He pensado crear una tercera columna en el listbox para calcular el tiempo de cad vuelta (con la resta) pero esto igual soy capaz de hacerlo yo (yo y mi optimismo pero el que no lo intenta....)

Muchas Gracias por su trabajo!

Saludos

Te anexo la macro actualizada, deberás tener 3 commandbutton. Uno para iniciar, el segundo para las vueltas y el tercero para salir.

Dim StopTimer As Boolean
Dim vuelta
'
Private Sub CommandButton1_Click()
'Por.Dante Amor
    StopTimer = False
    Range("A3") = Time
    Range("A4") = Time
    Range("A5") = "=B3-A5"
    CommandButton2.SetFocus
    ListBox1.Clear
    vuelta = 0
    Do
        Range("A4") = Time
        Range("A5") = "=A4-A3"
        lbl_reloj = Format([A5], "hh:mm:ss") & "." & Format((Timer - Int(Timer)) * 1000, "000")
        DoEvents
    Loop Until StopTimer
End Sub
'
Private Sub CommandButton2_Click()
'Por.Dante Amor
    vuelta = vuelta + 1
    If vuelta = Val(TextBox1) Then StopTimer = True
    Range("A3") = Time
    ListBox1.AddItem "vuelta  " & vuelta
    ListBox1.List(ListBox1.ListCount - 1, 1) = lbl_reloj
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    lbl_reloj.Font.Name = "Arial"
    lbl_reloj.Font.Size = 13
    ListBox1.ColumnCount = 2
End Sub
'
Private Sub UserForm_Terminate()
'Por.Dante Amor
    StopTimer = True
End Sub
'
Private Sub CommandButton3_Click()
'Por.Dante Amor
    StopTimer = True
    Unload Me
End Sub

S a l u d o s. Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas