Suma de rango con formato hora da error.
Tengo una hoja donde hay horarios de trabajo con una hora de entrada y otra de salida, para poder calcular la diferencia de horas aplico el siguiente código.
Public Sub calcular_horas()
Dim resta As Variant
Dim t1 As Variant
Dim t2 As Variant
Dim i As Integer
Dim h As Integer
For h = 6 To 61 Step 5
For i = 2 To 32
Worksheets("PROVA").Cells(h, i).NumberFormat = "hh:mm"
Worksheets("PROVA").Cells(h + 1, i).NumberFormat = "hh:mm"
t1 = Worksheets("PROVA").Cells(h, i).Value
t2 = Worksheets("PROVA").Cells(h + 1, i).Value
resta = Format(resta, "hh:mm")
If t2 > t1 Then
resta = t2 - t1
End If
If t2 = t1 Then
resta = ""
End If
If t2 < t1 Then
resta = t2 + 24 - t1
End If
Worksheets("PROVA").Cells(h + 2, i).NumberFormat = "hh:mm"
Worksheets("PROVA").Cells(h + 2, i).Value = resta
Next i
Worksheets("PROVA").Cells(h + 2, i).Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-31]:RC[-1])"
Next h
Worksheets("PROVA").Range("AG65").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-57]C:R[-2]C)"
Columns("AG:AG").EntireColumn.AutoFit
End Sub
Básicamente lo que hace es mirar si la hora de salida es menor que la de entrada (ya que hay horarios nocturnos) para cambiar el orden de la resta si hace falta.
El formato para poder verlo correctamente es "hh:mm". Estas restas parciales las hace bien pero cuando intento sumar todas las diferencias del mes da un resultado enorme que no se corresponde.
La hoja a que la que hago referencia es:
El número al final de la fila debería ser de 170:30h pero da 10106:30h qué no sé a que se debe.
La misma hoja con horarios diurnos hace bien los totales:
En este caso da lo que tiene que dar
No sé si tiene que ver pero las dos horas que se restan aparecen como horas del estilo 12:00:00 sin embargo el resultado sale una fecha y una hora, a pesar de que es el mismo formato.
A ver si alguien sabe a qué se debe