Hola de nuevo. Sigo peleándome con mi proyecto. Lo cierto es que ya lo tengo prácticamente terminado, pero necesito acabar esto que me está volviendo a dar quebraderos de cabeza. He buscado en la red y este problema se plantea bastantes veces y he adaptado de una manera muy básica un código para un Textbox. Veréis en la captura que el formulario tiene muchos Textbox.
La idea es la siguiente, en los Textbox H.Entrada, H.Salida y Tiempo NO efectivo, recojo los datos de una tabla Excel.
Quedaría así una vez busco un empleado y una fecha.
Lo que pretendo es poder modificarlos. o bien borrando el dato (dejándolo en blanco) o modificando la hora. Para esto he hecho el código que pongo más adelante, solo para probar con un Textbox. Además que me parece excesivo de líneas veo que solo funciona casi bien, porque puedo engañar al código y poner letras, siempre y cuando respete el símbolo "." en medio del dato. A ver si podéis echarme una mano, si fuera posible reducir el código porque lo tengo que repetir en 21 Textbox. Además que ya veis que aunque funcione se ve muy poco profesional, o nada.
Private Sub TextBoxE1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBoxE1 = "" Then Exit Sub
If Left(TextBoxE1, 2) > 23 Or Left(TextBoxE1, 2) < 0 Or Right(TextBoxE1, 2) > 59 Or Right(TextBoxE1, 2) < 0 Then
MsgBox "Se ha de introducir horas y minutos y con puntos (hh:mm)"
TextBoxE1 = ""
Exit Sub
End If
If Len(TextBoxE1) <> 5 Or Mid(TextBoxE1, 3, 1) <> ":" Then
MsgBox "Se ha de introducir horas y minutos y con puntos (hh:mm)"
Cancel = True
TextBoxE1 = ""
Exit Sub
End If
TextBoxE1 = Format(TextBoxE1, "hh:mm")
End Sub
Además quería preguntar, si introduzco un valor erróneo el valor que había antes en el checkbox ya me lo he cargado, por eso puesto de cuando no valide el dato deje en blanco el Textbox, pro si se pudiera conservar el dato que había sería lo suyo. Eso no tengo idea si se puede hacer o es imposible.
Gracias.
Moisés.
Editado el por Pirtrafilla
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Hola de nuevo. Sigo peleándome con mi proyecto. Lo cierto es que ya lo tengo prácticamente terminado, pero necesito acabar esto que me está volviendo a dar quebraderos de cabeza. He buscado en la red y este problema se plantea bastantes veces y he adaptado de una manera muy básica un código para un Textbox. Veréis en la captura que el formulario tiene muchos Textbox.
La idea es la siguiente, en los Textbox H.Entrada, H.Salida y Tiempo NO efectivo, recojo los datos de una tabla Excel.
Quedaría así una vez busco un empleado y una fecha.
Lo que pretendo es poder modificarlos. o bien borrando el dato (dejándolo en blanco) o modificando la hora. Para esto he hecho el código que pongo más adelante, solo para probar con un Textbox. Además que me parece excesivo de líneas veo que solo funciona casi bien, porque puedo engañar al código y poner letras, siempre y cuando respete el símbolo "." en medio del dato. A ver si podéis echarme una mano, si fuera posible reducir el código porque lo tengo que repetir en 21 Textbox. Además que ya veis que aunque funcione se ve muy poco profesional, o nada.
Private Sub TextBoxE1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If TextBoxE1 = "" Then Exit Sub If Left(TextBoxE1, 2) > 23 Or Left(TextBoxE1, 2) < 0 Or Right(TextBoxE1, 2) > 59 Or Right(TextBoxE1, 2) < 0 Then MsgBox "Se ha de introducir horas y minutos y con puntos (hh:mm)" TextBoxE1 = "" Exit Sub End If If Len(TextBoxE1) <> 5 Or Mid(TextBoxE1, 3, 1) <> ":" Then MsgBox "Se ha de introducir horas y minutos y con puntos (hh:mm)" Cancel = True TextBoxE1 = "" Exit Sub End If TextBoxE1 = Format(TextBoxE1, "hh:mm") End Sub
Además quería preguntar, si introduzco un valor erróneo el valor que había antes en el checkbox ya me lo he cargado, por eso puesto de cuando no valide el dato deje en blanco el Textbox, pro si se pudiera conservar el dato que había sería lo suyo. Eso no tengo idea si se puede hacer o es imposible.
Gracias.
Moisés.
Editado el por Pirtrafilla