Ayuda con cronometro

hola busco un cronometro como este A ver ahora: http://www.jrgc.es/ejemplos/ejemplo_20101123a.xls que vi en una de las respuestas que dieron)su equipo de expertos) a una pregunta similar, pero no me funciona la macro me a parce error "se ha producido error '13' en tiempo no coinciden los tipos" el error lo marca en la linea:

Worksheets("Hoja1").Range("D2").Value = Now - Worksheets("Hoja1").Range("B2").Value

espero poder recibir apoyo al respecto, saludos.

Respuesta
1

¿Y qué tienes en B2? Debes tener un valor tipo fecha, si no es asi, te marca error.

bueno tiene formato de hora, le puse el de fecho pero me arroja el mismo error, este es la macro:

Option Explicit
Dim dtHoraSiguiente, dtInicioCrono As Date
Sub PararReloj()
'Desactivar el evento Ontime
On Error Resume Next
Application.OnTime dtHoraSiguiente, "ActualizarHora", , False
End Sub
Sub ActualizarHora()
'Poner la hora en una celda
Worksheets("Hoja1").Range("D2").Value = Now - Worksheets("Hoja1").Range("B2").Value
'Lanzar el siguiente evento 1 segundo después
dtHoraSiguiente = Now + (1 / 86400)
Application.OnTime dtHoraSiguiente, "ActualizarHora"
End Sub
Sub LanzarCrono()
ActualizarHora
dtInicioCrono = Now
Worksheets("Hoja1").Range("B2").Value = FormatDateTime(dtInicioCrono, vbLongTime)
Worksheets("Hoja1").Range("C2").Value = ""
End Sub
Sub PararCrono()
PararReloj
Dim lngÚltimaFila As Long
With Worksheets("Hoja1")
.Range("C2").Value = FormatDateTime(Now(), vbLongTime)
.Range("D2").Value = FormatDateTime(.Range("C2") - .Range("B2"), vbLongTime)
lngÚltimaFila = .[B65536].End(xlUp).Row + 1
.Cells(lngÚltimaFila, 2).Value = .[B2].Value
.Cells(lngÚltimaFila, 3).Value = .[C2].Value
.Cells(lngÚltimaFila, 4).Value = [D2].Value
.Range("B" & lngÚltimaFila & ":D" & lngÚltimaFila).NumberFormat = "h:mm:ss"
End With
End Sub

Pero no me dijiste qué tienes en la celda C2, tienes un 5, un 2, 2:00:01, ¿qué dato tienes?

bueno en C2 esta el valor 09:09:14, igual ésta es la liga del archivo para que lo puedas ver como trabaja http://www.jrgc.es/ejemplos/ejemplo_20101123a.xls, gracias por tu atención.

Prueba con la siguiente, me parece que el problema es el formato que estás usando, cambié las líneas a time y no le puse formato y ya no envía error.

Dim dtHoraSiguiente, dtInicioCrono As Date
Sub PararReloj()
    'Desactivar el evento Ontime
    On Error Resume Next
    Application.OnTime dtHoraSiguiente, "ActualizarHora", , False
End Sub
Sub ActualizarHora()
    'Poner la hora en una celda
    Worksheets("Hoja1").Range("D2").Value = Time - Range("B2").Value
    'Lanzar el siguiente evento 1 segundo después
    dtHoraSiguiente = Now + (1 / 86400)
    Application.OnTime dtHoraSiguiente, "ActualizarHora"
End Sub
Sub LanzarCrono()
    ActualizarHora
    dtInicioCrono = Now
    Worksheets("Hoja1").Range("B2").Value = Time 'FormatDateTime(dtInicioCrono, vbLongTime)
    'Worksheets("Hoja1").Range("C2").Value = "00:00:00"
End Sub
Sub PararCrono()
    PararReloj
    Dim lngÚltimaFila As Long
    With Worksheets("Hoja1")
        '.Range("C2").Value = FormatDateTime(Now(), vbLongTime)
        .Range("C2").Value = Time
        '.Range("D2").Value = FormatDateTime(.Range("C2") - .Range("B2"), vbLongTime)
        .Range("D2").Value = .Range("C2") - .Range("B2")
        lngÚltimaFila = .[B65536].End(xlUp).Row + 1
        .Cells(lngÚltimaFila, 2).Value = .[B2].Value
        .Cells(lngÚltimaFila, 3).Value = .[C2].Value
        .Cells(lngÚltimaFila, 4).Value = [D2].Value
        .Range("B" & lngÚltimaFila & ":D" & lngÚltimaFila).NumberFormat = "h:mm:ss"
    End With
End Sub

Prueba y me comentas.

Saludos. Dam
Si es lo que necesitas.

bueno mira intente con la corrección que me facilitas pero me aparece lo mismo :/, en tu comentario me dices que ya no envía el error podrías enviarme el archivo donde no aparece error==='?? mi correo es [email protected], saludos.

Te envié el archivo, después de probar, podrías finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas