Visual Basic - Funcion SumaHoras

Life is soft - evento anual de software empresarial
 
Vista:

Funcion SumaHoras

Publicado por Emanuel Lopez (45 intervenciones) el 09/12/2006 19:53:18
tengo esta funcion que les pongo ahi abajo, pero tengo un problema al manerarla, no me saca ningun resultado, es que no entiendo como manejarla, supuestamente la funcion suma dos horas de tal manera que pueda mostrar una suma de horas de este modo
"350:00", es justamente lo que encesito pero no tengo ni la menor idea de como hacer que corra esta funcion si alguien me puede ayudar se los agradesco.

Tengo en mi programa dos variables n1 y n2 en esas variables almaceno horas en n1="15:25" y en n2="23:00", supuestamente con esta funcion me deberia de arrojar un resultado de "38:25", mi duda es como pasar esos valores acumulados a la funcion??

si alguien me puede ayudar lo agradesco mucho.

Function SumaHoras(Hora1 As String, Hora2 As String) As String
Dim H1 As Long
Dim H2 As Long
Dim M1 As Integer
Dim M2 As Integer
Dim P As Integer
Dim P2 As Integer
Dim Hf As Long
Dim Mf As Long

P = InStr(1, Hora1, ":") ' guardo la posicion del ":" de la hora 1
P2 = InStr(1, Hora2, ":") ' guardo la posicion del ":" de la hora 2

H1 = Mid(Hora1, 1, P - 1) 'tomo la hora 1
H2 = Mid(Hora2, 1, P2 - 1) 'tomo la hora 2

M1 = Mid(Hora1, P + 1, Len(Hora1)) ' tomo los seg. de la hora 1
M2 = Mid(Hora2, P2 + 1, Len(Hora2)) ' tomo los seg. de la hora 2

Hf = (H1 + H2) ' sumo las horas
Hf = Hf * 60 ' paso las horas a minutos
Mf = M1 + M2 ' sumo los minutos

Mf = Hf + Mf ' sumo el total minutos
Hf = Fix(Mf / 60) ' obtengo las horas totales de las horas
Mf = Mf - (Hf * 60) ' obtengo los minutos
SumaHoras = Format(Hf, "0#") & ":" & Format(Mf, "00")
End Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Funcion SumaHoras

Publicado por Jasall (60 intervenciones) el 10/12/2006 07:52:40
Buenas, una funcion siempre te devuelve algo en este caso el resultado. Para pasar los valores a la funcion "resultado = SumaHoras(valor1,valor2)"
'
Text1 = "15:25"
Text2 = "23:00"
Text3 = SumaHoras(Text1, Text2)
'
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion SumaHoras

Publicado por Alex (40 intervenciones) el 10/12/2006 09:49:11
La función que pones funciona perfectamente, pero puedes conseguir el mismo resultado con menos variables:

Function SumaHoras(Hora1 As String, Hora2 As String) As String
Dim Minutos As Integer, Horas As Integer

Minutos = Mid(Hora1, (InStr(1, Hora1, ":", vbTextCompare) + 1), Len(Hora1))
Minutos = Minutos + Mid(Hora2, (InStr(1, Hora2, ":", vbTextCompare) + 1), Len(Hora2))
Horas = Left(Hora1, (InStr(1, Hora1, ":", vbTextCompare) - 1))
Horas = Horas + Left(Hora2, (InStr(1, Hora2, ":", vbTextCompare) - 1))
Horas = Horas + (IIf(Minutos >= 60, Int(Minutos / 60), 0))
Minutos = IIf(Minutos >= 60, Minutos - 60, Minutos)
SumaHoras = Format(Horas, "0") & ":" & Format(Minutos, "00")
End Function

y para llamar a la función:

Private Sub Command1_Click()
Text3 = SumaHoras(Text1, Text2)
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar