Curso Excel VBA y Macros – Cap. 53 y 54 – Formularios – Control ComboBox ó Cuadro combinado

<<CURSO COMPLETO EN YOUTUBE>>

Una de las acciones más socorridas en el temas de Formularios en Excel y VBA, es cómo rellenar un ComboBox y que éste se rellene automáticamente con nuevos elementos. El Control Cuadro combinado nos permitirá tener una lista de valores que se desplegará al dar clic en una flecha hacia abajo.

En este video tutorial veremos varias maneras en las que podremos rellenar un ComboBox dentro un Formulario o UserForm:

  • Propiedades DropButtonStyle, ShowDropButtonWhen, Style en un ComboBox o Cuadro combinado.
  • Añadir elementos uno a uno usando AddItem.
  • Añadir elementos en base a un nombre definido.
  • Rellenar ComboBox en base a los valores de una Tabla.
  • Rellenar ComboBox recorriendo los valores de una columna,
  • Rellenar ComboBox y mostrar varias columnas.

Ver video Capítulo 53 Excel VBA & Macros

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

Ver video Capítulo 54 Excel VBA & Macros

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

Añadir elementos uno por uno usando AddItem

En este ejemplo usaremos el Método AddItem para agregar elementos al CombBox uno a uno, o de manera manual. Rellenaremos el ComboBox usando el evento Initialize del UserForm. También haremos uso de algunas propiedades.

 

Figura 1. Rellenar ComboBox usando el método AddItem en UserForm.

Private Sub UserForm_Initialize()

With Me.ComboBox6

    .DropButtonStyle = fmDropButtonStyleArrow
    .ShowDropButtonWhen = fmShowDropButtonWhenAlways
    .Style = fmStyleDropDownCombo
    
    .AddItem "Microsoft"
    .AddItem "Excel"
    .AddItem "VBA"
    .AddItem "Macros"

End With
End Sub

Rellenar ComboBox en base a Nombre definido

Los nombres definidos se asignar a rangos de celdas para posteriormente usarlas como matrices en cálculos. En este ejemplo le asignaremos el nombre definido SUCURSALES a un rango, para luego usar los valores el rango para rellenar un ComboBox usando la propiedad RowSource. Date cuenta que usamos la propiedad ColumnHeads para mostrar encabezado de columna a la lista mostrada.

 

Figura 2. Rellenar ComboBox en base a nombre definido en un Formulario.

Private Sub CommandButton4_Click()

Me.ComboBox3.ColumnHeads = True
Me.ComboBox3.RowSource = "SUCURSALES"

End Sub

Rellenar valores en un ComboBox con nombre definido de tamaño variable

A diferencia del ejemplo anterior, en este ejemplo le definiremos un nombre al rango de manera automática, adecuando el tamaño de la lista a los valores que haya en el rango.

Private Sub CommandButton6_Click()

Dim Filas

Filas = Sheets("Hoja1").Range("F1").CurrentRegion.Rows.Count
ActiveWorkbook.Names.Add Name:="SUCURSALES", RefersTo:=Sheets("Hoja1").Range("F2:F" & Filas)
Me.ComboBox5.RowSource = "SUCURSALES"

End Sub

Rellenar ComboBox en base a una tabla

Una manera sencilla de rellenar el ComboBox es tomando valores de una Tabla. Solo deberemos saber el nombre de la tabla y el del campo del cual deseamos tomar los valores. La ventaja de usar Tablas, es que al ingresar valores nuevos, éstos se reflejarán automáticamente en el Cuadro combinado.

Private Sub CommandButton5_Click()

Me.ComboBox4.RowSource = "Tabla1[PRODUCTO]"

End Sub

Rellenar ComboBox recorriendo celdas de una columna

Este ejemplo, si bien no es el más óptimo, sobre todo si tenemos una columna con muchos valores. La ventaja de usar este método es que, al recorrer celda por celda podemos evaluar cada valor y decidir si se añade al ComboBox.

 

Figura 3. Rellenar ComboBox recorriendo los valores de una columna.

Private Sub CommandButton3_Click()

Dim Filas
Dim i

Filas = Sheets("Hoja1").Range("A1").CurrentRegion.Rows.Count

For i = 2 To Filas
    Me.ComboBox2.AddItem Sheets("Hoja1").Cells(i, 2).Value
Next i

End Sub

Mostrar varias columnas en ComboBox

Aunque no es muy común, de manera opcional podemos mostrar más de una columna en un ComboBox, usando las propiedades ColumnCount y ColumnWidths.

 

Figura 4. Mostrar varias columnas en ComboBox.

Private Sub CommandButton7_Click()

Dim i

With Me.ComboBox1

    .ColumnCount = 2
    .ColumnWidths = "50 pt;10pt"

    For i = 1 To 12
        .AddItem VBA.MonthName(i)
        .Column(1, i - 1) = i
    Next i

End With

End Sub

Descarga el archivo de ejemplo

053 – Forrmularios Control ComboBox Cuadro combinado – EXCELeINFO.zip

 

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