Restar horas con textbox solo expertos

Les comento que tengo un 4 textbox los cuales tiene formatos horas (textbox1 = inicio jornada trabajo, textbox2 =hora inicio descanso, textbox3 = hora termino descanso, textbox4 = hora salida trabajo), y al retarlos me da la cantidad de hras trabajadas en un 5 textbox, hasta aquí todo bien... EL PROBLEMA SURGE, COMO TODOS SABRÁN, CUANDO LA HORA DE ENTRADA ES DE UN TURNO O JORNADA DE NOCHE... Por ejemplo:
textbox1 = 23:00
textbox2 = 2:00

textbox3 = 3:00
textbox4 = 7:00

Me imagino que para solucionar esto, se debería agregar fechas (en textbox 1 la de un día y en el textbox2 la del día siguiente) pero no se hacerlo.
Si fueran celdas utilizaría la fórmula "Residuo", pero por más que intente nunca pude utilizarla en la macro (userform) que es lo que necesito.

Si alguien me puede ayudar se lo agradeceré por mil

1 Respuesta

Respuesta
1

No entiendo mucho del tema acerca de formularios y textbox pero la solución que te podría facilitar es la siguiente.

En el textbox 5 antes de hacer toda la resta para los 4 textbox haría está pregunta:

Si textbox 1>textbox 2 entonces

Textbox 2 - textbox 1 + 24

Como textbox 1 va a ser mayor que el 2, al restar el 2 con el 1 te va a dar negativo pero al final de ese mismo textbox le sumas 24 hs quedándote un número positivo.

Siguiendo el ejemplo que pones vemos que el textbox 1 vale 23 y el textbox 2 vale 2

Haciendo el 2 - el 1 quedaría así:

2-23= -21

A ese -21 le sumo 24 y nos da la diferencia, o sea, 3 hs.

Ahora bien acá no hace falta restar todos los textbox sino que basta restar el textbox final con el inicial y a esto sumarle 24

Quedaría así:

If textbox 1> textbox 5 then

Textbox 5= textbox 4 - textbox 1 + 24

End if 

Ejemplo:

Textbox 1= 22:00 inicio de jornada

Textbox 2= 02:00 descanso

Textbox 3= 03:00 fin descanso

Textbox 4= 06:00 fin jornada

Como vemos textbox 1 es mayor a textbox 4 entonces textbox 5 = fin jornada - inicio jornada + 24

Texto 5 = 06:00 - 22:00 + 24

Textbox 5 = -16:00+24= 8 hs 

Favio muchas gracias, me fue útil tu respuesta por que me sirvió para detectar el problema, aunque claro la modifique según mis requerimientos dejare un pequeño detalle a continuación por si a alguien le puede resultar de utilidad.

If Textbox1 > Textbox4 And Textbox2 < Textbox3 Then
Textbox5.Text = CDate(CDate(Textbox4.Text) - CDate(Textbox1.Text) + 24) - (CDate(Textbox3.Text) - CDate(Textbox2.Text))
myVar = Application.WorksheetFunction.Text(Me.Textbox5, "hh:mm")
Textbox5 = myVar
Textbox5.Text  = Format(Textbox5, "hh:mm")

espero a alguien le sirva, saludos y gracias favio valdez 

Me alegro que te haya servido porque de lo que es Visual Basic en si n entiendo nada y me gustaría mucho aprender el lenguaje ese.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas