Limitar el contenido numérico de un textbox?

Para Dante Amor

Mi apreciado experto Dante, en esta ocasión quisiera que me ayudara con el siguiente problema, tengo un textbox para ingresar un id, el id debe tener una longitud mínima de 4 caracteres numéricos, y una longitud máxima de 12 caracteres numéricos.

Con el siguiente código me permite ingresar hasta la longitud máxima, pero no me controla la longitud mínima, es decir permite ingresar de 0 a 12 caracteres.

Private Sub txt_ID_Change()
If VBA.Len(txt_ID.Value) >= 4 And VBA.Len(txt_ID.Value) <= 12 Then
Application.SendKeys "{Tab}"
Else
End If
End Sub
Respuesta
4

[Ho la Francisco Jaimes, te anexo el enlace a un vídeo con la explicación para permitir solamente números, mínimo 4 dígitos y máximo 12 dígitos:

https://youtu.be/ArZzLT6agS4 

o

Excel Permitir solamente números en un TextBox - YouTube

Te invito a suscribirte a mi canal y activas las alertas para que recibas la notificaciones de los nuevos vídeos.

1 respuesta más de otro experto

Respuesta
2

Francisco, quiero dejar claro que el maestro de esto es Dante, pero por si te puede dar una idea.

1º No puedes usar la conjunción AND, ya que jamás se puede dar el caso de que sea a la vez menor que 4 y mayor que 12.

2º Si lo pones en el evento Al cambiar, a medida que vayas "bajando" una tecla te aparecería el mensaje.

Por ejemplo, si tengo el cuadro de texto Texto71 y escribo algo de menos de 4 dígitos

Cuando pulso Enter, para que "valide" lo escrito

Y el cursor se vuelve al cuadro de texto71 para que lo modifique. En el caso de que escribiera algo con una longitud superior a 12 dígitos

Al pulsar Enter, lo mismo

Si lo hago bien, entre 4 y 12

Al pulsar Enter no te da problema ninguno. En este caso, repito, en este caso el código es

Private Sub Texto71_BeforeUpdate(Cancel As Integer)
If Len([Texto71]) < 4 Or Len([Texto71]) > 12 Then
MsgBox "El valor tiene que estar comprendido entre 4 y 12 dígitos", vbOKOnly + vbExclamation, "Tendrás que modificarlo"
Cancel = True
Else
Application.SendKeys "{Tab}"
End If
End Sub

Dante, perdona

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas