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.

[embedyt]https://youtu.be/EQl1F9_kn9w[/embedyt]

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.

10 thoughts on “Restringir ingreso de texto o números en TextBox en Excel”

  1. 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

    1. 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. 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. Sergio, la pagina me dice que el archivo no existe que fue borrado, ¿me lo puedes enviar a mi correo porfa?

  4. Pingback: Restringir ingreso de texto o números en TextBox en Excel « MVPs de LATAM

  5. Andres Charry Álvarez

    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

Leave a Comment

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

Scroll to Top