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.