Restringir ingreso de texto o números en TextBox en Excel

Permitir ingreso de texto o números en TextBox de Formulario en Excel VBA

El presente artículo muestra un formulario en el que tenemos 2 TextBoxes: uno para ingresar sólo texto y otro para ingresar sólo números.

Cómo funciona

  • Sólo números: aquí utilizamos la función Chr(x), donde especificamos que si el caracter es menor  a 48 (0) y mayor a 57 (9) entonces éste deberá reemplazarse con “”, es decir, vacío.
  • Sólo texto: aquí utilizamos la función IsText para validar que todo lo que no sea texto se reemplace con “”, es de decir, vacío.

Ver video Permitir sólo texto o números en TextBox de Formulario en Excel VBA

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Código

Los siguientes códigos deberán ir en el Change de cada uno de los TextBoxes

'Validar que sólo se ingresen números (a-z y símbolos)
Private Sub txtNumero_Change()
    Dim Texto As Variant
    Dim Caracter As Variant
    Dim Largo As Integer
    On Error Resume Next
    Texto = Me.txtNumero.Value
    Largo = Len(Me.txtNumero.Value)
    For i = 1 To Largo
        Caracter = Mid(Texto, i, 1)
        If Caracter <> "" Then
            If Caracter < Chr(48) Or Caracter > Chr(57) Then
                Me.txtNumero.Value = Replace(Texto, Caracter, "")
            Else
            End If
        End If
    Next i
    On Error GoTo 0
    Caracter = 0
    Caracter1 = 0
End Sub
'
'Validar que sólo se ingrese texto (0-9)
Private Sub txtTexto_Change()
    Dim Texto As Variant
    Dim Caracter As Variant
    Dim Largo As String
    On Error Resume Next
    Texto = Me.txtTexto.Value
    Largo = Len(Me.txtTexto.Value)
    For i = 1 To Largo
        Caracter = CInt(Mid(Texto, i, 1))
        If Caracter <> "" Then
            If Not Application.WorksheetFunction.IsText(Caracter) Then
                Me.txtTexto.Value = Replace(Texto, Caracter, "")
            Else
            End If
        End If
    Next i
    On Error GoTo 0
End Sub

Animación del formulario en ejecución

Validar texto y números

:: Descargar el ejemplo

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

You may also like...

10 Responses

  1. Sergio says:

    Estimado Sergio,
    Gracias por compartir tus conocimientos, quiero preguntarte lo siguiente; tengo un text.box para entrar a un libro con usuario y password, ¿como hago para insertar la macro que indicas ypueda aceptar; Donde dice Usuario solo texto y donde dice Password solo Números, y ademas no me vaya a otra hoja si lo ingresado es incorrecto?, es decir si se equivocan indique Passw erroneo y a la tercera se cierre el libro y no habra nada.
    atento a tus comentarios y enseñanza para los novatos como yo.
    Sergio

    • Hola Sergio:

      Justamente ayer publiqué un artículo para que los TextBox te limiten a sólo texto o sólo número, lo puedes consultar aquí:

      Para la cuestión de que no te deje hacer nada cuando el password es cuestión de definir que cuando se le de en el botón Cerrar realice la intrucción Application.Quit SaveChanges:=False

  2. Sergio says:

    Disculpa Sergio, pero la segunda instrucción no la entendi, lo que quiero es que si se equivocan 3 veces se cierre excel, y no me habra nada, como ocurre actualmente con el archivo.¿pordrías por favor ser más claro?, desde ya gracias

  3. En estos días voy a publicar precisamente un ejemplo de tu petición. Te mando una versión preliminar para la adecúes a tu archivo.

    Aquí la puedes descargar: https://www.dropbox.com/s/jh1rvmb2ovv53be/3%20intentos%20de%20contrase%C3%B1a.xlsm

  4. Sergio says:

    Sergio, la pagina me dice que el archivo no existe que fue borrado, ¿me lo puedes enviar a mi correo porfa?

  5. german mendoza says:

    esta muy bien tu tutorial muchas gracias pero como hago que me acepte los dos puntos ???

  6. Andres Charry Álvarez says:

    Asi es mas corto y mas efectivo ya que no tiene que validar todos los campos,
    sino que valida unicamente el ultimo campo ingresado.

    Private Sub TxtCedula_Change()

    ‘Largo es la cantidad de caracteres ingresados en el TextBox
    Dim Largo As Integer

    ‘Valor es el valor ingresado en el TextBox
    Dim valor As Variant

    ‘caracter toma el ultima caracter ingresado en el TextBox
    Dim caracter As Variant

    valor = TxtCedula.Value
    Largo = Len(valor)

    ‘Si el valor es mayor a cero indica que ingreso algun dato entonces entra a verificar
    ‘mas no recorre todo el campo
    If (Largo > 0) Then

    On Error Resume Next

    ‘Se captura el ultimo caracter ingresado en la siguiente linea
    caracter = Mid(valor, Largo, 1)

    ‘Si no es numerico entra al if, En caso de ser necesario al contrario (Texto)
    ‘ se quita el NOT solo para que el campo sea texto y no numerico
    If Not Application.WorksheetFunction.IsNumber(CInt(caracter)) Then

    ‘Se reemplaza el ultimo caracter por espacio
    TxtCedula.Value = Replace(valor, caracter, “”)
    End If
    End If
    On Error GoTo 0
    End Sub

    PD: Disculkpas pero no se como poner esto dentro de un code, si alguien me indica le agradezco, saludos a todos

  1. November 12, 2012

    […] Restringir ingreso de texto o números en TextBox en Excel […]

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: