Saltar al contenido

Como VALIDAR que en TEXTBOX se INGRESE una FECHA Excel VBA #514

Validar Textbox ingreso fechas, ingreso numeros, barra fechas automaticas

Como Permitir que solo se ingresen fechas en Textbox

En esta oportunidad les voy a presentar una macro que deja que solo se inserten fecha en el textbox, como así también agrega automáticamente las barras de fecha y permite que solo se ingrese número, no texto o string en textbox.

Necesitas apender a manejar Excel, click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet, te lo recomiendo no te arrepentirás.

  
 

Mira el funcionamiento de la macro y una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestro canal de You Tube, mira el playlist con  vídeos relacionados donde podrás ver la macros relacionadas en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil.

Macro para Validar Textbox y permitir ingreso de fechas solamente

Se debe descargar el ejemplo para que sea más fácil entender el código, una vez hecho y al abrir el libro se debe presionar el botón que muestra un formulario, en dicho formulario hay un textbox que solo permite ingresar números, valida que dato ingresado sea una fecha y a su vez inserta en forma automática las barras de la fecha, es decir que para ingresar un dato tipo fecha solo se debe presionar el día el mes y el año despreocupándose por insertar las barras de fecha porque la macro lo hace automáticamente. 

Si se ingresa un carácter distinto a un número, excepto la barra inclinada usada para la fecha, la macro automáticamente borra el carácter impidiendo que se ingrese texto en el textbox o cualquier otro carácter distinto a un número, para ello tiene en cuenta el código Ascci.

Explicación del código que permite el ingreso de números y fechas únicamente en Textbox, además de ingresar barras de fechas 

Para validar el ingreso de números en textbox y barras de fechas en forma automatizada, se debe agregar el código en el evento «Change» del Textbox, es decir que a medida que se valla ingresando algún carácter en el Textbox se ejecutará la macro.

Para permitir el ingreso solamente de números en un Textbox de Excel VBA, se debe hacer un bucle For… Next, recorriendo cada carácter ingresado en el Textbox, en primer lugar se determinar el largo del texto ingresado hasta el momento haciendo un bucle entre el primer y último carácter para determinar el largo se usa el siguiente código:

Lar = Len(Me.TextBox1.Value)

Luego se realiza el bucle determinando si el carácter esta incluido entre el código 48 y 57, que en el código Ascii representan a los números del 0 al 9, se usa el siguiente código:

 For i = 1 To Lar
Car = Mid(Tex, i, 1)
If Car <> «» Then
If Car < Chr(48) Or Car > Chr(57) Then

En caso que detecte que el carácter ingresado no es un número sino el código que representa la barra inclinada que se una para ingresar una fecha, la macro no hace nada y sigue con el carácter siguiente, esto se da porque la macro también acepta que se pueda ingresar la barra de fecha manualmente, se usa el código:

If Car = Chr(47) Then GoTo ir:

En caso que el carácter sea distinto a un número, excepto una barra inclinada usada para ingreso de una fecha el carácter es reemplazado por un carácter vacío, nada, o eliminado, con el siguiente código:

TextBox1.Value = Replace(Tex, Car, «»)

Para el ingreso de barras de fechas se utiliza un Select Case, es decir detecta que si ingresaron 2 o 5 caracteres, agregando automáticamente la barra inclinada en el Textbox, la explicación es porque 2 y 5  es la posición de la barra inclinada normalmente cuando se ingresa una fecha en formato «dd/mm/yyyy», 

Select Case Lar
Case 2
Me.TextBox1.Value = Me.TextBox1.Value & «/»
Case 5
Me.TextBox1.Value = Me.TextBox1.Value & «/»
End Select

Algo que no se explicó aún, pero que aparece el código al principio de la macro es que el Textbox se limita al ingreso de 10 caracteres, no permitiendo ingresar mas, ello tiene explicación en la sumatoria de caracteres de la fecha que son: 2 para el día, una barra, 2 para el mes, una barra y cuatro para el año, en total suman 10 caracteres, el código es el siguiente:

TextBox1.MaxLength = 10

En el evento «Exit» del Textbox se encuentra la macro que valida que se haya ingresado una fecha, en caso que lo ingresado en el textbox no sea una fecha sale un msgbox solicitando que se ingrese una fecha valida, el código que se usa para determinar si el dato ingresado en el Textbox es una fecha es el siguiente:

If IsDate(TextBox1) = False Then
MsgBox («Debe ingresar una fecha válida»), vbCritical, «AVISO»

En caso que lo ingresado sea una fecha esta es formateada del modo «dd/mm/yyyy» con el siguiente código:


TextBox1 = Format(CDate(TextBox1), «dd/mm/yyyy»)

 

Descarga del archivo ejemplo como permitir que se inserten fechas en Textbox de Excel

Descarga el Libro de Excel con el código completo del Ejemplo validar textbox en excel con fechas el link se encuentra al final del post, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.

Código del ejemplo Como Validar Textbox y Permitir Ingreso de Números y Fechas Solamente y agregar automáticamente barras de fecha

Código que se ingresa en Userform1 

Private Sub CommandButton1_Click()
TextBox1 = Clear
TextBox1.SetFocus
End Sub

Private Sub TextBox1_Change()
‘Valida para que solo se ingrese número
Dim Tex As Variant, Car As Variant, Lar As Integer
On Error Resume Next
TextBox1.MaxLength = 10
Tex = Me.TextBox1.Value
TextBox1.Value = Replace(Tex, «//», «/»)
Lar = Len(Me.TextBox1.Value)
For i = 1 To Lar
Car = Mid(Tex, i, 1)
If Car <> «» Then
If Car < Chr(48) Or Car > Chr(57) Then
If Car = Chr(47) Then GoTo ir:
TextBox1.Value = Replace(Tex, Car, «»)
End If
End If
ir:
Next i

Select Case Lar
Case 2
Me.TextBox1.Value = Me.TextBox1.Value & «/»
Case 5
Me.TextBox1.Value = Me.TextBox1.Value & «/»
End Select

End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 <> Empty Then
If IsDate(TextBox1) = False Then
MsgBox («Debe ingresar una fecha válida»), vbCritical, «AVISO»
Cancel = True
TextBox1 = Empty
Else
TextBox1 = Format(CDate(TextBox1), «dd/mm/yyyy»)
End If
End If
End Sub

 

Código que se ingresa en Modulo1

Sub muestra()
UserForm1.Show
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Donate:
Cuenta Paypal: https://paypal.me/programarexcel
Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd
Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407

Summary
Author Rating
1star1star1star1star1star
Aggregate Rating
no rating based on 0 votes