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.