Ver Mensaje Individual
  #20 (permalink)  
Antiguo 14/05/2010, 06:13
Avatar de XYON126
XYON126
 
Fecha de Ingreso: abril-2006
Mensajes: 272
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Sumar filas en un MSFlexgrid

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
  1. ' ---------------------------------------------------------------------------
  2. ' \\ -- Funición sumar totales diarios.
  3. ' ---------------------------------------------------------------------------
  4.  
  5. Private Sub SumarGrid()
  6.  
  7. Dim Columna As Single
  8. Dim Parcial As String
  9.  
  10. Parcial = "0:00:00"
  11.          
  12. For Columna = 0 To MSFlexGrid.Cols - 1
  13.      Parcial = HmsSum(Parcial, MSFlexGrid.TextMatrix(7, Columna))
  14. Next
  15.  
  16. 'Retornar el total de la suma a la función SumarGrid
  17. Totalhoras_C = Parcial
  18.  
  19. End Sub


Y la qtuya que esta en un modulo es esta .:

Código vb:
Ver original
  1. ' --------------------------------------------------------------------------
  2. ' \\ -- Subrutina para calcular las horas del archivo Horas.dat y del Grid.
  3. ' --------------------------------------------------------------------------
  4.  
  5. Public Function HmsSum(ByVal HmsUno As String, ByVal HmsDos As String) As String
  6.   ' Suma dos valores recibidos en formato hh:mm:ss
  7.  ' Si recibe formato hh:mm devuelve sólo hh:mm
  8.  Dim Uno() As String, Dos() As String
  9.   Dim Horas As Long, Minutos As Long, Segundos As Long, ConSegundos As Boolean
  10.   Dos = Split(HmsDos, ":")
  11.   If UBound(Dos) = 2 And HmsUno = "" Then HmsUno = "00:00:00"
  12.   If UBound(Dos) = 1 And HmsUno = "" Then HmsUno = "00:00"
  13.   Uno = Split(HmsUno, ":")
  14.   If UBound(Uno) = 2 And UBound(Dos) = 2 Then ConSegundos = True Else ConSegundos = False
  15.   Horas = Val(Uno(0)) + Val(Dos(0))
  16.   Minutos = Val(Uno(1)) + Val(Dos(1))
  17.   If ConSegundos Then Segundos = Val(Uno(2)) + Val(Dos(2))
  18.   If Segundos > 59 Then Minutos = Minutos + 1: Segundos = Segundos - 60
  19.   If Minutos > 59 Then Horas = Horas + 1: Minutos = Minutos - 60
  20.   If ConSegundos Then
  21.     HmsSum = Format(Horas, "#") & ":" & Format(Minutos, "00") & ":" & Format(Segundos, "00")
  22.   Else
  23.     HmsSum = Format(Horas, "#") & ":" & Format(Minutos, "00")
  24.   End If
  25. 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