Fecha en textbox no deja borrar vba

Dante Amor

¿Hola Dan como estas?

¿Encontré este código y lo que pasa es que si deseo borra no deja . Tiene solución?

Por que he probado varios códigos y ninguno me deja borrar.

O si ud tiene alguna validación que me ayude.

Por favor Dan..

Gracias

Private Sub TextBox1_Change()
Select Case Len(Textbox1.Text)
Case Is = 2
Textbox1.Text = Textbox1.Text & "/"
Case Is = 5
Textbox1.Text = Textbox1.Text & "/"
Case Else
End Select
Dia = Mid(UserForm1.Textbox1, 1, 2)
If Dia > 31 Then Textbox1 = ""
Mes = Mid(UserForm1.Textbox1, 4, 2)
If Mes > 12 Then Textbox1.Text = Left(UserForm1.Textbox1, 3)
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Año = Mid(UserForm1.Textbox1, 7, 4)
If Año < 2000 Then Textbox1.Text = Left(UserForm1.Textbox1, 6)
If Not IsDate(Textbox1) Then
MsgBox Textbox1 & " Fecha incorrecta" ', si no modifica quedara la fecha de hoy"
Textbox1 = Now
End If
End Sub

3 respuestas

Respuesta
2

Es complicado poner el formato de fecha en un textbox, no he encontrado con un código que realmente funcione.

Lo mejor en estos casos es sustituir el textbox por un control de fecha, puede ser un MonthView o un DTPicker, pero estos funcionan solamente en algunas versiones.

Otra opción es permitir captura la fecha y validar si realmente es una fecha al salir del textbox, o validarla cuando presiones un botón.

Revisa las opciones en esta respuesta:

Elegir fecha en textbox con calendario

Gracias Dan.

Lo raro es que al borrar la fecha borra solo los números del año  no la barra  "/" !!

Lo que pasa es que el programa corre en un office 2016 y no tiene el control de calendario por lo que busque uno que es echo en un userform y funciona bien. pero también necesito que escriba en el textbox..

Esas son las opciones que conozco.

Respuesta
2

Pido disculpas por la intromisión.

Rapo12 y si pruebas con poner el código en el evento keypress del textbox1, algo así:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case Len(TextBox1.Text)
Case Is = 2
TextBox1.Text = TextBox1.Text & "/"
Case Is = 5
TextBox1.Text = TextBox1.Text & "/"
Case Else
End Select
Dia = Mid(TextBox1, 1, 2)
If Dia > 31 Then TextBox1 = ""
Mes = Mid(TextBox1, 4, 2)
If Mes > 12 Then TextBox1.Text = Left(TextBox1, 3)
End Sub

y si quieres quitar la barra o diagonal entonces en el evento Enter del mismo textbox1 lo siguiente:

Private Sub TextBox1_Enter()
Dim Quitar As String
On Error Resume Next
If InStr(TextBox1, "/") > 0 Then
Quitar = Replace(TextBox1.Value, "/", "")
TextBox1.Value = Quitar
End If
End Sub

Espero te sirva, y nuevamente pido disculpas. Salu-dos

Funciona bien la solución de borrar el "/"

Muchas gracias @Ahrens Ruano

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas