VBA ACCESS, restar horas y detectar cuando el resultado es negativo

Estoy realizando un programa de planificación y necesitaría restar dos variables con horas sin la fecha. Para obtener las horas que sean negativas.

Explico la función que le quiero dar: cuando el resultado sea negativo tendré que agregarle un día para que la resta de estas horas no lo retorne en el día anterior.

Ejemplo:

T= 05:59:59

resto=  - 10:00:00

H= T - resto  (me da erro)

Fecha= 23/09/2019

Si fuera el resultado negativo entonces a fecha agregaría un día

finProd = DateAdd("n", (resto * 60), CDate(fecha & " " & T))

Me da este resultado 22/09/2019 19:29:59 y debería identificarlo para agregarle un día para que fuera correcto

3 Respuestas

Respuesta
2

Carlos, las horas no funcionan así. Aunque las veas como 05:59:59 lo que realmente es y con lo que trabaja cualquier ordenador es con su valor numérico. Las horas son decimales de día, que vale 1. Por ejemplo

Por tanto, basta con decirle en cualquier evento

Private Sub H_GotFocus()
If Resto > T Then
H = (T + 1) - Resto
Else
H = T - Resto
End If
End Sub

Es decir, que si resto es mayor que T, que le sume un 1 que equivale a sumarle un día. Si fuera menor

Respuesta
1

Dim h1 As Date, h2 As Date
h1 = Format((TimeValue(resto)), "hh:mm:ss")
h2 = Format((TimeValue(T)), "hh:mm:ss")

If h1 > h2 Then
      MsgBox "La hora de H1 es MAYOR"
Else
       MsgBox "La hora de H2 es IGUAL o MENOR"
End If

Navegando por internet he encontrado este código.

Una saludo

Respuesta
1

Creo que podrías hacer directamente:

IF T > resto
THEN
  H = T - resto
ELSE
  H = 1 + T - resto
END IF

Salu2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas