SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: ainhoabiribay en Miércoles 27 de Noviembre de 2002, 20:08
-
en el proyecto k estoy realizando tengo que sumar horas para ello lo que hago es pasarlas a decimal hacer con ellas lo que tengo k hacer y luego las vuelvo a combertir a formato hora con las siguientes funciones:
Public Function HorasDec(h As Variant) As Variant
'función que combierte una hora en decimal
If Not IsNull(h) Then
HorasDec = Hour(h) + Minute(h) / 60 ' + Second(h) / 3600
End If
End Function
Public Function DecHoras(h As Variant) As Variant
'función que combierte un número decimal a formato hora
Dim nhoras As Integer
Dim nminutos As Integer
'Dim nsegundos As Integer
nhoras = Int(h)
nminutos = Int((h - nhoras) * 60)
nsegundos = Int(((h - nhoras) * 60 - nminutos) * 60)
If nsegundos = 59 Then
nminutos = nminutos + 1
End If
DecHoras = nhoras & ":" & nminutos '& ":" & nsegundos
End Function
El problema k tengo es que cuando llamo a la función HorasDec con una hora por ejemplo 25:00 la función hour no funciona ya que solo funciona con horas de 0 a 24 como podría solucionarlo para que si tengo 100horas por ejemplo me funcione y no me de erro de tipos.
Gracias y un saludo.
-
Utiliza el siguiente ejemplo:
Private Sub Command1_Click()
'Asumo que las casillas text1 y text1 tienen la capacidad
'de verificar si lo ingresado esta en formato hora, y por tanto
'al presionar el boton Command1, los valores estan correctos
Hora1 = Format(Text1, "hh:mm")
Hora2 = Format(Text2, "hh:mm")
Text3 = SumarHoras(Hora1, Hora2)
End Sub
Public Function SumarHoras(ByVal sH1 As String, ByVal sH2 As String) As String
'Obtengo las horas
H1 = CDbl(Mid(sH1, 1, 2))
H2 = CDbl(Mid(sH1, 1, 2))
'Obtengo los minutos
M1 = CDbl(Mid(sH1, 4, 2))
M2 = CDbl(Mid(sH2, 4, 2))
'Sumo los minutos primero
SumaMinutos = M1 + M2
If SumaMinutos > 60 Then
Minutos = SumaMinutos - 60
Delta = 1
Else
Minutos = SumaMinutos
Delta = 0
End If
Horas = H1 + H2 + Delta
SumarHoras = Horas & ":" & Minutos
End Function
Espero te sirva