• Domingo 22 de Diciembre de 2024, 20:12

Autor Tema:  Re: problema urgente sumando horas  (Leído 1159 veces)

ainhoabiribay

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: problema urgente sumando horas
« en: Miércoles 27 de Noviembre de 2002, 20:08 »
0
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.

Jose Arriagada

  • Miembro MUY activo
  • ***
  • Mensajes: 373
    • Ver Perfil
problema urgente sumando horas
« Respuesta #1 en: Miércoles 27 de Noviembre de 2002, 21:45 »
0
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