Hola erbuson!
He estado probando tu funcion y me da este error .:
Error '9' en tiempo de ejecución.
el subindice esta fuera del intervalo.
Las dos funciones donde la llamo y la tuya son estas .:
Código vb:
Ver original' ---------------------------------------------------------------------------
' \\ -- Funición sumar totales diarios.
' ---------------------------------------------------------------------------
Private Sub SumarGrid()
Dim Columna As Single
Dim Parcial As String
Parcial = "0:00:00"
For Columna = 0 To MSFlexGrid.Cols - 1
Parcial = HmsSum(Parcial, MSFlexGrid.TextMatrix(7, Columna))
Next
'Retornar el total de la suma a la función SumarGrid
Totalhoras_C = Parcial
End Sub
Y la qtuya que esta en un modulo es esta .:
Código vb:
Ver original' --------------------------------------------------------------------------
' \\ -- Subrutina para calcular las horas del archivo Horas.dat y del Grid.
' --------------------------------------------------------------------------
Public Function HmsSum(ByVal HmsUno As String, ByVal HmsDos As String) As String
' Suma dos valores recibidos en formato hh:mm:ss
' Si recibe formato hh:mm devuelve sólo hh:mm
Dim Uno() As String, Dos() As String
Dim Horas As Long, Minutos As Long, Segundos As Long, ConSegundos As Boolean
Dos = Split(HmsDos, ":")
If UBound(Dos) = 2 And HmsUno = "" Then HmsUno = "00:00:00"
If UBound(Dos) = 1 And HmsUno = "" Then HmsUno = "00:00"
Uno = Split(HmsUno, ":")
If UBound(Uno) = 2 And UBound(Dos) = 2 Then ConSegundos = True Else ConSegundos = False
Horas = Val(Uno(0)) + Val(Dos(0))
Minutos = Val(Uno(1)) + Val(Dos(1))
If ConSegundos Then Segundos = Val(Uno(2)) + Val(Dos(2))
If Segundos > 59 Then Minutos = Minutos + 1: Segundos = Segundos - 60
If Minutos > 59 Then Horas = Horas + 1: Minutos = Minutos - 60
If ConSegundos Then
HmsSum = Format(Horas, "#") & ":" & Format(Minutos, "00") & ":" & Format(Segundos, "00")
Else
HmsSum = Format(Horas, "#") & ":" & Format(Minutos, "00")
End If
End Function
Cuando me sale el error me apunta a la linea 15 es esta:
Horas = Val(Uno(0)) + Val(Dos(0))
¿Porque del error si los datos son como comentastes, que he hecho mal?
Un saludo