Saltar al contenido

Problema de horas en Textbox y Excel VBA


Recommended Posts

publicado

Hola de nuevo. Llevo varias horas con esto y no consigo trabajar bien con las horas en VBA.

Ahora mismo el problema que tengo es que con este código no me suma los Textbox vacíos. Necesito que los sume como "cero". Porque a veces no hay hora de entrada, o tampoco final, simplemente porque ha estado de vacaciones. O por ejemplo no ha habido tiempo para comer porque se ha hecho la jornada continua.

¿Podéis ayudarme? Me da lo mismo que lo de en horas (hh:mm) que en decimal, pero que me de el resultado., que no sea un número entero.

TextBoxT1 es el resultado, TextBoxS1 es la hora Final, TextBoxE1 es hora Inicio, TextBoxN1 es el tiempo para comer. Es decir que a la hora final le restamos la hora de inicio y le descontamos el tiempo para comer y me tiene que dar el total de jornada de trabajo. Así lo hace bien, excepto que si uno de los TextBox está en blanco ya no hace la operación.

TextBoxT1.Value = (Format(TextBoxS1.Value, "##.00") - Format(TextBoxE1.Value, "##.00") - Format(TextBoxN1.Value, "##.00")) * 24
TextBoxT2.Value = (Format(TextBoxS2.Value, "##.00") - Format(TextBoxE2.Value, "##.00") - Format(TextBoxN2.Value, "##.00")) * 24
TextBoxT3.Value = (Format(TextBoxS3.Value, "##.00") - Format(TextBoxE3.Value, "##.00") - Format(TextBoxN3.Value, "##.00")) * 24
TextBoxT4.Value = (Format(TextBoxS4.Value, "##.00") - Format(TextBoxE4.Value, "##.00") - Format(TextBoxN4.Value, "##.00")) * 24
TextBoxT5.Value = (Format(TextBoxS5.Value, "##.00") - Format(TextBoxE5.Value, "##.00") - Format(TextBoxN5.Value, "##.00")) * 24
TextBoxT6.Value = (Format(TextBoxS6.Value, "##.00") - Format(TextBoxE6.Value, "##.00") - Format(TextBoxN6.Value, "##.00")) * 24
TextBoxT7.Value = (Format(TextBoxS7.Value, "##.00") - Format(TextBoxE7.Value, "##.00") - Format(TextBoxN7.Value, "##.00")) * 24

El resultado podéis ver en esta captura que el sábado a pesar de ir a trabajar no da resultado y el domingo no pone 0.

image.thumb.png.7f749f8f780ef135c08fa64427a5bfd9.png

Gracias.

Moisés.

publicado

He probado con el domingo (7) a ver que consigo. Y con este código tampoco pone 0.

TextBoxT7.Value = (CDbl(TextBoxS7) - CDbl(TextBoxE7) - CDbl(TextBoxN7)) * 24

Intento convertir en double el resultado del textbox pero sigue saliendo vacío.

publicado

Bueno, voy buscando posibilidades.

He encontrado un mensaje que @Antoniresponde a alguien con un problema parecido. He intentado adaptar el código, pero ahora no me sale vacío, el resultado siempre es 0.

Este es el enlace 

 

Copio lo que he hecho, que está claro que no lo estoy acertando para nada

Dim S1 As Double: Dim E1 As Double: Dim N1 As Double

Private Sub TextBoxS1_Change(): On Error Resume Next: S1 = 0: S1 = CDbl(TextBoxS1): End Sub
Private Sub TextBoxE1_Change(): On Error Resume Next: E1 = 0: E1 = CDbl(TextBoxE1): End Sub
Private Sub TextBoxN1_Change(): On Error Resume Next: N1 = 0: N1 = CDbl(TextBoxN1): End Sub

Sub SumarTiempo()
On Error Resume Next
TextBoxT1.Value = CDbl(S1 - E1 - N1)
End Sub

Este código lo he intentado usar solo para el primer día de la semana, lunes (1) pero me da resultado 0.

Espero vuestra ayuda, ahora estoy ya bloqueado.

Moisés.

publicado

A diferencia de Excel, VBA no es capaz de operar con horas formateadas, por tanto es necesario convertirlas a una magnitud común, en el ejemplo que adjunto he convertido a minutos antes de hacer la diferencia antes de convertir a horas.

Sumar horas.xlsm

publicado
Hace 10 minutos , Antoni dijo:

A diferencia de Excel, VBA no es capaz de operar con horas formateadas, por tanto es necesario convertirlas a una magnitud común, en el ejemplo que adjunto he convertido a minutos antes de hacer la diferencia antes de convertir a horas.

Sumar horas.xlsm 13.97 kB · 0 descargas

Gracias @Antoni, voy a copiarlo en mi código. Solo una cosa, en tu ejemplo pasa igual que en el mío una vez puesto el código. Que si no hay datos no se por qué da este resultado, tendría que ser 0. ¿no crees? No se si esto tendría alguna solución matemática.

image.png.653b01fd24037b3e788e5ce93a410db9.png

Gracias!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.