He logrado hacer un apaño con lo que me dijiste, muchas gracias (aunque aquí no se entiende mucho.)
Option Explicit
Dim dtHoraSiguiente, dtInicioCrono As Date
Sub PararReloj() Application.ScreenUpdating = False '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("D12").Value = Now - Worksheets("Hoja1").Range("B12").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("B12").Value = FormatDateTime(dtInicioCrono, vbLongTime) Worksheets("Hoja1").Range("C12").Value = "" Range("A12").Select ActiveCell.FormulaR1C1 = "=NOW()" Selection.NumberFormat = "m/d/yyyy"
End Sub
Sub PararCrono()
PararReloj
Dim lngÚltimaFila As Long
With Worksheets("Hoja1") .Range("C12").Value = FormatDateTime(Now(), vbLongTime) .Range("D12").Value = FormatDateTime(.Range("C12") - .Range("B12"), vbLongTime) lngÚltimaFila = .[B65536].End(xlUp).Row + 1 .Cells(lngÚltimaFila, 2).Value = .[B12].Value .Cells(lngÚltimaFila, 3).Value = .[C12].Value .Cells(lngÚltimaFila, 4).Value = .[D12].Value .Cells(lngÚltimaFila, 1).Value = .[A12].Value .Range("B" & lngÚltimaFila & ":D" & lngÚltimaFila).NumberFormat = "h:mm:ss" .Range("A" & lngÚltimaFila).NumberFormat = "m/d/yyyy"
End With
Range("D16").Select ActiveCell.FormulaR1C1 = "=R[-4]C" Range("D16").Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("D17").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=RC[-1]" Range("D17").Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("C17").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=R[-1]C[1]+RC[1]" Range("C17").Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("D17").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=R[-1]C" Range("D17").Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub