Una posible solución podrían ser estas dos funciones:
Código vb:
Ver originalPublic Function hhmmss(ByVal FechaInicio As Date, ByVal FechaFin As Date) As String
' Recibe dos fechas y devuelve su diferencia en Horas, Minutos y Segundos en formato hhhhhh:mm:ss
' una cadena de 12 dígitos para ser mas facil tomar lo deseado con Mid$
' Hor = Mid$(1,6) ' Min = Mid$(8,2) ' Seg = Mid$(11,2)
Dim Calculos As Long, h As Long, m As Long, s As Long
If Not IsDate(FechaInicio) Or Not IsDate(FechaFin) Then GoTo Aviso
Calculos = DateDiff("s", FechaInicio, FechaFin)
s = Calculos Mod 60
Calculos = (Calculos - s) / 60
m = Calculos Mod 60
h = (Calculos - m) / 60
hhmmss = Right$(Str$(h + 1000000), 6) & ":" & Right$(Str$(m + 100), 2) & ":" & Right$(Str$(s + 100), 2)
Exit Function
Aviso:
MsgBox "Se ha recibido un valor de fecha incorrecto"
End Function
Código vb:
Ver originalPublic Function Sumahhmmss(ByVal Sumando1 As String, Sumando2 As String) As String
' Suma dos valores obtenidos de hhmmss y los devuelve en uno solo
Dim h As Long, m As Long, s As Long
h = Val(Mid$(Sumando1, 1, 6)) + Val(Mid$(Sumando2, 1, 6))
m = Val(Mid$(Sumando1, 8, 2)) + Val(Mid$(Sumando2, 8, 2))
s = Val(Mid$(Sumando1, 11, 2)) + Val(Mid$(Sumando2, 11, 2))
If s > 59 Then s = s - 60: m = m + 1
If m > 59 Then m = m - 60: h = h + 1
Sumahhmmss = Right$(Str$(h + 1000000), 6) & ":" & Right$(Str$(m + 100), 2) & ":" & Right$(Str$(s + 100), 2)
End Function
Para probarlo es suficiente con insertar un command1 y modificar este código
Código vb:
Ver originalPrivate Sub Command1_Click()
' Para probar toma la fecha actual y la misma con un añadido de horas que será las devueltas
MsgBox "Horas = " & hhmmss(Now, Now + CDate("12:59:15"))
' Las Suma dos veces para probar
MsgBox "Sumas = " & Sumahhmmss(hhmmss(Now, Now + CDate("12:59:15")), hhmmss(Now, Now + CDate("12:59:15")))
End Sub
Probad y si hay errores avisad o corregid.
Saludos