• Martes 14 de Mayo de 2024, 08:47

Autor Tema:  Re: problema restar horas  (Leído 3013 veces)

ainhoabiribay

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: problema restar horas
« en: Jueves 28 de Noviembre de 2002, 16:50 »
0
un compañero del foro me ha ayudado con la suma de horas pero ahora lo que ocurre es que no puedo restar os facilito el codigo que el me ha pasado a ver si alguien me puede ayudar para que reste bien, porque en cuanto meto una hora que tiene minnutos ya no me resta bien.

Código:

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

Gracias

rsoft

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: problema restar horas
« Respuesta #1 en: Jueves 28 de Noviembre de 2002, 18:35 »
0
Para restar horas es mucho mas fácil, solo tienes que utilizar la funcion DateDiff.

a = CDate("13:00")
b = CDate("15:00")
MsgBox DateDiff("n", a, b) & " Minutos de Diferencia"
MsgBox DateDiff("h", a, b) & " Horas de Diferencia"

Jose Arriagada

  • Miembro MUY activo
  • ***
  • Mensajes: 373
    • Ver Perfil
Re: problema restar horas
« Respuesta #2 en: Jueves 28 de Noviembre de 2002, 20:14 »
0
Nuevamente yo:

Parece que tenemos un serio problema de logica matematica o de programacion estimado amigo(a).

La funcion que te entregue solo tiene un inconveniente, SOLO SUMA HORAS, y tiene un problema de escritura
El la funcion donde dice:

'Obtengo las horas
H1 = CDbl(Mid(sH1, 1, 2))
H2 = CDbl(Mid(sH1, 1, 2))

Debe decir:
'Obtengo las horas
H1 = CDbl(Mid(sH1, 1, 2))
H2 = CDbl(Mid(sH2,1,2))

Si haces una depuracion al momento de la ejecucion, hubieses detectado el problema.

Jose Arriagada

  • Miembro MUY activo
  • ***
  • Mensajes: 373
    • Ver Perfil
problema restar horas
« Respuesta #3 en: Jueves 28 de Noviembre de 2002, 20:28 »
0
Te adjunto rutinas que hacen ambas operaciones: PROBADAS Y ARCHIPROBADAS.

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(sH2, 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 = Format(Horas, "00") & ":" & Format(Minutos, "00")
End Function


Public Function RestarHoras(ByVal sH1 As String, ByVal sH2 As String) As String
'Obtengo las horas
H1 = CDbl(Mid(sH1, 1, 2))
H2 = CDbl(Mid(sH2, 1, 2))
'Obtengo los minutos
m1 = CDbl(Mid(sH1, 4, 2))
m2 = CDbl(Mid(sH2, 4, 2))
'Primero comparo los minutos
If m1 < m2 Then
    dMin = 60 - m2 + m1
    dHora = 1
Else
    dMin = m1 - m2
    dHora = 0
End If
Horas = H1 - H2 - dHora
RestarHoras = Format(Horas, "00") & ":" & Format(dMin, "00")
End Function