Curso Excel VBA y Macros – Cap. 51 y 52 – Formularios – Control TextBox ó Cuadro de texto
El Control TextBox o Cuadro de texto es uno de los controles más usados en Formularios o UserForms en Excel VBA, ya que nos permite ingresar valores numéricos o de texto para posteriormente procesarlos en algún cálculo, pasarlos a otro control o a una hoja de un archivo de Excel.
Este tema consta de 2 videos donde veremos las siguiente propiedades relativas a este Control TextBox:
-
BackColor.
-
Multiline.
-
ScrollBar.
-
EnterKeyBehavior.
-
PasswordChar.
-
Usar la función BUSCARV o VLOOKUP.
-
Validar valores mientras se escribe.
Ver video Capítulo 51 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Ver video Capítulo 52 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Propiedad BackColor. Validar valores numéricos
Para este ejemplo usaremos la propiedad BackColor para asignarle el color rojo al fondo de un TextBox cuando el valor no sea numérico.
Figura 1. Propiedad BackColor de un TextBox en UserForm VBA.
Usaremos la siguiente macro.
Private Sub CommandButton1_Click()
If Not VBA.IsNumeric(Me.TextBox1.Value) Then
Me.TextBox1.BackColor = VBA.vbRed
ElseIf VBA.IsNumeric(Me.TextBox1.Value) Then
Me.TextBox1.BackColor = VBA.vbWhite
End If
End Sub
Propiedades Multiline, ScrollBar y EnterKeyBehavior. Varias líneas en un TextBox.
Normalmente un Cuadro de texto o TextBox contiene una sola línea para ingresar valores, pero con la propiedad MultiLine tendremos la oportunidad tener varias líneas para ingresar valores. Además, si deseamos tener una Barra de desplazamiento cuando las líneas pasen el alto del TextBox, usaremos la propiedad ScrollBar para tenerla. Y por último, para que podamos insertar saltos de línea con la tecla Enter, usaremos la propiedad EnterKeyBehavior.
Figura 2. Propiedades Multiline, ScrollBar y EnterKeyBehavior para un TextBox en un UserForm.
Private Sub UserForm_Initialize() Me.TextBox2.MultiLine = True Me.TextBox2.ScrollBars = fmScrollBarsBoth Me.TextBox2.EnterKeyBehavior = True End Sub
Propiedad PasswordChar. Cuadro de texto con formato contraseña
En más de una ocasión necesitaremos tener un Formulario de tipo Usuario y Contraseña. La propiedad PasswordChar nos permitirá formatear un Cuadro de texto con un tipo contraseña. Usando esta propiedad, vamos a poder elegir el carácter que será mostrado cada vez que ingresemos una letra o un número. En nuestro ejemplo usaremos el clásico Asterisco “*”.
Figura 3. Propiedad PasswordChar para un TextBox en un UserForm.
Private Sub UserForm_Initialize() Me.TextBox3.PasswordChar = "*" End Sub
Usar BUSCARV para devolver valores en un TextBox
El control Cuadro de texto tiene la ventaja que puede recibir valores de manera manual y de manera automática. En este ejemplo tendremos 2 TextBoxes. En uno ingresamos un valor, y usando la función BUSCARV o VLOOKUP devolveremos el valor encontrado en otro TextBox.
La función BUSCARV se mandará llamar usando el evento Exit del primer Cuadro de texto. El evento Exit lanzará una macro al momento de salir del control.
Figura 4. Uso de la función BUSCARV o VLOOKUP para usarse en un control TextBox.
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Valor As Integer
Dim Buscar As String
Valor = Me.TextBox4.Value
Buscar = Application.WorksheetFunction.VLookup(Valor, Sheets("Hoja1").Range("A1:D16"), 2, 0)
Me.TextBox5.Value = Buscar
End Sub
Validar valores mientras se escribe
En este ejemplo haremos uso del evento Change para validar valores al momento de ser ingresados en el TextBox. Haciendo uso del Ciclo For Next vamos a permitir solo valores numéricos en el Cuadro de texto, además de ingresar solo 10 dígitos, usando la propiedad MaxLength.
Figura 5. Evento Change y propiedad MaxLength para un TextBox en un UserForm.
Private Sub TextBox6_Change()
Dim Texto As Variant
Dim Largo As Integer
Dim i As Integer
Dim Caracter As Variant
Texto = Me.TextBox6.Value
Largo = VBA.Len(Texto)
For i = 1 To Largo
Caracter = Mid(VBA.CStr(Texto), i, 1)
If Caracter <> "" Then
If Caracter < VBA.Chr(48) Or Caracter > VBA.Chr(57) Then
Texto = VBA.Replace(Texto, Caracter, "")
Me.TextBox6.Value = Texto
Else
End If
End If
Next i
End Sub
Descarga el archivo de ejemplo
051 – 052 – Forrmularios Control TextBox Cuadro de texto – EXCELeINFO
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.

