Curso Excel VBA y Macros – Cap. 51 y 52 – Formularios – Control TextBox ó Cuadro de texto

<<CURSO COMPLETO EN YOUTUBE>>

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

<<CURSO COMPLETO EN YOUTUBE>>

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