Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Validar que solo existan letras y números en un textbox

| 41 comentarios

Primero crearemos un userform el cual tendrá dos textbox, uno de los textbox solo permitirá el ingreso de números y el otro solo permitirá el ingreso de letras.

Userform 1 Validar que solo existan letras y números en un textbox

1) Para validar el ingreso de números en el primer textbox tendremos que introducir el siguiente código relacionado al  evento textbox1.Change:

Private Sub TextBox1_Change()

If Not IsNumeric(TextBox1.Text) And _
TextBox1.Text <> "" Then
Beep
MsgBox "Se debe ingresar solo números"
TextBox1.Text = ""
TextBox1.SetFocus
End If
End Sub

El código indica mediante el condicional  IF, que si lo ingresado en el textbox1 no es un valor numérico y a la vez no se trate del caso en el que el textbox se encuentre vacío  (por ejemplo en caso ingrese un numero y lo borre) borre el carácter ingresado y envié el mensaje “Se debe ingresar solo números a través de un msgbox

2) Para validar el ingreso de text0 en el Segundo textbox tendremos que introducir el siguiente código relacionado evento textbox2.Change:

Private Sub TextBox2_Change()
If IsNumeric(TextBox2) And _
TextBox2.Text <> "" Then
Beep
MsgBox "Se debe ingresar solo Texto"
TextBox2.Text = ""
TextBox2.SetFocus
End If
End Sub

El código indica mediante el condicional  IF, que si lo ingresado en el textbox2  es un valor numérico  borre el carácter ingresado y envié el mensaje “Se debe ingresar solo texto a través de un msgbox

Validar ingreso de numeros y Texto a un Textbox

Elaborado por: Luis Agustin Gaitan Murillo

41 comentarios

  1. Tambien se puede hacer que el TextBox de un formulario solo acepte letras o solo acepte números, deberias usar el evento KeyPress del TexBox en mencion.

  2. Hola a todos un textbox de no permitir símbolos:

    No permitir simbolos

    Private Sub Text1_KeyPress(KeyAscii As Integer)
    If (KeyAscii >= 33) And (KeyAscii = 58) And (KeyAscii = 91) And (KeyAscii = 123) And (KeyAscii <= 126) Then
    MsgBox "Nada de simbolos"
    KeyAscii = 8
    End If
    End Sub

    Espero te sirva, hasta pronto.

    • Tu macro me recordó que también necesito realizar algo similar pero no con un aviso, sino que cada vez que reconozca algún simbolo que no necesito, simplemente sea eliminado (y señalar el espacio, ahora en blanco con un color). Esto porque cuando se envía información de una plataforma a otra el orden de los datos es importante y no debe variar, sino solo ser reemplazado por un valor correcto.

  3. como puedo hacer para validar que un contenido del textbox este entre un margen de 0 a 20 denme un ejemplo porfavor

    • Utilizando un botón para ingresar el número una forma de verificar si el número que se colocó en la caja de texto esta entre 1 y 20 sería:

      Private Sub CommandButton1_Click()
      If Not IsNumeric(TextBox1) Then
      MsgBox "Debe ingresar un número"
      Else
      If Not (TextBox1 >= 0 And TextBox1 <= 20) Then
      MsgBox "Debe ingresar un número entre 0 y 20"
      Else
      MsgBox "Ingreso el valor: " & TextBox1.Value
      End If
      End If
      End Sub

      • tengo el mismo problema, pero resulta que tengo q poner un numero entre 4 y 60, me sale mi mensage de error cuando quiero poner 30, me reconcoe primero el 3 y me salta el error este es mi codigo

        Private Sub TextBox5_TextChanged(sender As Object, e As EventArgs) Handles TextBox5.TextChanged
        If TextBox5.Text = "" Then
        TextBox5.Text = 4
        ElseIf Not IsNumeric(TextBox5.Text) Then
        MsgBox("debe ingresar un numero")
        TextBox5.Text = 4
        ElseIf ((TextBox5.Text) > 60 Or (TextBox5.Text) < 4) Then
        MsgBox("el tiempo debe estar entre 4 y 60")
        TextBox5.Text = 4
        End If
        End Sub

        • Asumo que es por el .text que estas agregando ((TextBox5>60) or (TextBox560) or (Val(TextBox5)<4)). Si no estoy mal el .text toma como texto el dato y no seria comparable numéricamente.

  4. Este ejemplo es para verificar que se ingreso un número entero, sin límite de valor, utilizando un formulario con la caja de texto TexTBox2 y un botón CommandButton1 :

    Private Sub CommandButton1_Click()

    valido = False

    If IsNumeric(TextBox2) Then

    valido = True

    'verificar si se ingresaron caracteres entre 0 y 9
    For i = 1 To Len(TextBox2)
    If (Mid(TextBox2, i, 1)) "." Then ' verificamos caracter por caracter
    Caracter = CInt(Mid(TextBox2, i, 1))
    If Not Caracter "" Then
    valido = False
    End If
    Else
    valido = False
    End If
    Next i

    If valido = True Then
    MsgBox "Ingreso el valor entero: " & TextBox2.Value
    Else
    MsgBox "Debe ingresar un número entero"
    End If
    Else
    MsgBox "Debe ingresar un número entero"
    End If
    End Sub

  5. Profesor
    Para que sirve la instrucción "Beep"?

    Saludos

    • beep hace referencia a un sonido que emitirá el codigo en esa linea.

  6. Profesor
    En el Procedimiento figura la instrucción "Beep", para que sirve dicha instrucción?

    Gracias

  7. Profesor
    Dos consultas:
    1. Qué realiza la instrucción TextBox2.SetFocus, y
    2. De qué depende que se use sólo TextBox o TextBox.Text?

    Gracias

    • Luis,

      1. textbox2.setfocus es para que el cursor esté en el objeto textbox2
      2. TextBox hace referencia unicamente al objeto en en si, es decir llama al objeto TextBox, a diferencia del TextBox.Text que se refiere al contenido del objeto, en este caso texto.

      saludos.

    • 1. Qué realiza la instrucción TextBox2.SetFocus:
      Ubica el cursor en el objeto textbox2, también se dice que coloca el foco en el objeto.

      2. De qué depende que se use sólo TextBox o TextBox.Text?
      TextBox es el objeto, Text es una de sus propiedades, es el texto que se muestra en el objeto TextBox. Por ello, si deseamos asignarle un texto al objeto Textbox debemos asignarle el valor a su propiedad Text de la siguiente manera: TextBox.Text= "Valor"

  8. Es importante la validación de datos, sean numéricos o de texto, para no introducir valores distintos a los solicitados. Por ejemplo si se solicita numero de DNI y se introducen por error letras.

  9. El código del mamigo no es malo pero tampoco es muy bueno
    Private Sub TextBox2_Change()
    If IsNumeric(TextBox2) And _
    TextBox2.Text “” Then
    Beep
    MsgBox “Se debe ingresar solo Texto”
    TextBox2.Text = “”
    TextBox2.SetFocus
    End If
    End Sub

    ¿Porque? porque si entro una letra y sigo con números ME LO PERMITE Y NO DEVERIA PERMITIR NUMEROS EN NINGUN PUESTO

    • cual seria el codigo que valide solo texto.??

  10. Probé el código de Joao y efectivamente en un textbox de solo números no acepta números en cualquier posición del texto. Gracias a los demés también por el aporte.

  11. Buen ejemplo, muy claro y útil. Es muy importante enmarcar los procedimientos que debe realizar el usuario dentro de un formulario, ya que gracias a este se obtienen los datos de entrada para cualquier procedimiento que se haya diseñado. Este ejemplo muestra claramente como ayudamos al usuario a ingresar información al programa y si esta no es del tipo que debió ingresar le reportamos un mensaje para que ingrese correctamente los datos. En caso no se realizará esto se tendría tal vez reportes de errores en el programa debido a que no se pudo procesar un dato porque no es del tipo adecuado.

  12. Veo que muchas de esas funciones se mejoraron en VB. Net y cuando la hoja Excel desplazará su programación a VB .Net... Sería formidable

  13. Excelente aporte sobre restricciones y validaciones, me sirvio para poder realizar un formulario de matricula donde los textbox para nombres y apellidos solo acepten texto y restringan el ingreso de numeros y tambien simbolos y claro sean de una longitud determinada...muchas gracias

  14. Aplicaciones que encontre con para validar datos es la codificacion de los equipos de una planta concentradora (8 digitos), la cantidad de horas de parada de un equipo, si en mayor a 48 horas, es una falla grave, otro es el codigo del trabajador que reporto, debe ser numerico y es importnate sabe quin reporto.
    La logica no es complicada y puede ser facilmente extraible para ser usada en otro libro.

  15. si quisiera validar varios texbox ? con numeros y texto ?

  16. ¿Qué significa Beep?

    • Beep es un sonido emitido por el equipo en que esta ejecutando la macro.

  17. Excelente! El detalle hace que se aplique fácilmente!

  18. Es muy útil ya que muestra un mensaje indicando el error correspondiente y así evitar un mal ingreso de datos.

  19. Buen caso de validación para texto y números, para no cometer errores especialmente cuando se trabaja con amplios datos.

  20. Habrá algún código para poner un límite a los datos que se escriban en el formulario? Por ejemplo, que sólo se admitan 8 número.

    Saludos!

Página de comentarios 1 de 2
1 2

Deja una respuesta

Los campos requeridos estan marcados con *.