Diferencia entre horas en textbox

Hola,
Tengo 3textbox, el primero es la hora de inicio de un trabajo y el segundo la hora de finalizació, los dos están en formato hh:mm. Me gustaría que el tercero me calculara el tiempo de trabajo pero en formato horas, es decir si hora inici es la 13:00 y hora fin las 14:45 que el resultado fueses 1,75.
Gracias

1 respuesta

Respuesta
1
Prueba esto:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   If Not IsDate(TextBox1) Then
      MsgBox "Hay que poner bien el formato Hora:minuto"
      TextBox1 = ""
   Else
      If IsDate(TextBox2) Then calcula_hora
   End If
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   If Not IsDate(TextBox2) Then
      MsgBox "Hay que poner bien el formato Hora:minuto"
      TextBox2 = ""
   Else
      If IsDate(TextBox1) Then calcula_hora
   End If
End Sub
Sub calcula_hora()
   Dim inicio As Date, final As Date, total As Date
   Dim diferencia As Double
   inicio = TextBox1
   final = TextBox2
   total = final - inicio
   TextBox3 = Hour(total) + Minute(total) * 100 / 60 / 100
End Sub
No lo acabo de entender:
En el textbox1 i 2 tengo:
Private Sub TextBox1_Change()
largo_entrada = Len(Me.TextBox1)
Select Case largo_entrada
    Case 2
        Me.TextBox1.Value = Me.TextBox1.Value & ":"
End Select
End Sub
De esta manera he conseguido que me salga directamente el formato de hora.
Mefaltaria sólo el textbox3
Mi proposición es que quites tus textbox1 y 2 change y utilices el código que te he enviado.
Guarda el fichero con otro nombre para que no se estropee antes de borrar o añadir algo.
Con la copia o el original, elimina el código change de tus dos textbox (1 y 2).
Copia el codigoque yo te he enviado y prueba.
Te explico:
Cada vez que te sales de textbox 1, analiza si has escrito con el formato hh:mm y si tienes una hora metida en en textbox2, realiza el calculo que yo le he llamado calcula_hora y lo escribe en el textbox3.
Espero que esto te sirva. Si necesitas más explicación pídemela.
Los he puesto y no me funciona. De la forma que lo tenia ya me escribía directamente los ":" de las horas y me eran más fáciles de entrar. Ahora no me funciona y tampoco entiendo nada de lo que he escrito.
Lo siento soy un poco torpe
Perdona! He vuelto a probar y ahora parece que funcione... pero de todas formas, no podrían salir automáticamente los ":" de las horas, y el resultado de la diferencia, no podría ser con sólo dos decimales... ¿Pido mucho no?
¿Sabes de algún manual o algo para aprender todo esto? ¿Es qué cada vez que necesito algo os lo pregunto pero muy claro no lo tengo?!
Añade estas dos SUB y luego cambia lo que te indico más abajo:
Private Sub TextBox1_Change()
   If Len(TextBox1) = 2 Then TextBox1 = TextBox1 & ":"
End Sub
Private Sub TextBox2_Change()
   If Len(TextBox2) = 2 Then TextBox2 = TextBox2 & ":"
End Sub
' ---------------------------
Cambia la sub Calcula_ahora por esta otra:
'---------------------------
Sub calcula_hora()
   Dim inicio As Date, final As Date, total As Date
   Dim diferencia As Double
   inicio = TextBox1
   final = TextBox2
   total = final - inicio
   TextBox3 = Format((Hour(total) + Minute(total) * 100 / 60 / 100), "0.00")
End Sub
'-----------------------
Si das por terminado la pregunta , recuerda cerrar y valorar
Saludos desde España / Navarra

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas