Curso Excel VBA y Macros – Cap. 55 – Formularios – PARTE 1 Control ListBox ó Cuadro de lista

<<CURSO COMPLETO EN YOUTUBE>>

Siguiendo con el tema de Formularios, en este Video Tutorial veremos el Control ListBox o Cuadro de lista, el cual es uno de los controles más flexibles, ya que nos permite cargar valores de manera manual, como desde un rango de valores o una Tabla. Incluso, es unos de los Controles ActiveX que nos ayudará para un Proyecto de Alta, Baja y Modificación de registros.

Con respecto a este Control ListBox veremos los siguientes tema:

  • Rellenar Cuadro de lista en base a un Rango. ✔
  • Rellenar Cuadro de lista en base a una Tabla. ✔
  • Propiedades RowSource, ColumnCount, ColumnWidths y ColumnHeads. ✔
  • Identificar el elemento seleccionado en un ListBox (lista sencilla y selección múltiple).
  • Pasar valores de un ListBox a otro ListBox.
  • Filtrar valores de una tabla y mostrarlos en un ListBox.
  • Eliminar filas de una tabla con datos mostrados en un ListBox.

Ver video Capítulo 55 Excel VBA & Macros

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

Cargar datos en ListBox desde una Tabla

En este ejemplo tenemos una Tabla, la cual, como debemos saber, cambia automáticamente de tamaño al agregar valores. Los registros de la Tabla los cargaremos en un ListBox, además de usar las siguientes propiedades para darle formato al Control ActiveX.

  • ColumnCount. Hace referencia al números de columnas que deseamos mostrar en el ListBox.
  • ColumnWidths. Hace referencia al ancho de las columnas.
  • ColumnHeads. Cuando deseamos mostrar encabezados en el Cuadro de lista.
  • RowSource. Hace referencia a los datos de origen.

Figura 1. Cargar valores de una Tabla a un ListBox en un Formulario VBA.

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

Private Sub CommandButton1_Click()

Dim Columnas As Integer

Columnas = Range("Tabla1").Columns.Count

With Me.ListBox1

    .ColumnCount = Columnas
    .ColumnWidths = "20 pt;60 pt; 60 pt; 60 pt"
    .ColumnHeads = True
    .RowSource = "Tabla1"

End With

End Sub

Cargar datos en ListBox desde un Rango

Usando la misma propiedad RowSource, ahora cargaremos valores a un ListBox, pero ahora desde un Rango normal de celdas. Haremos uso del evento Initialize para cargar los valores al abrir el UserForm. Al rango que se cargará, le asignaremos un Nombre definido que se cambiará de tamaño automáticamente usando las propiedades Offset y Resize.

Figura 2. Cargar valores de un Rango a un ListBox desde un Formulario VBA.

Option Explicit

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

Private Sub UserForm_Initialize()

Dim MiRango As Range
Dim MiRango2 As Range
Dim Columnas As Integer

Set MiRango = Sheets("Rango").Range("A1").CurrentRegion
Set MiRango2 = MiRango.Offset(1, 0).Resize(MiRango.Rows.Count - 1, MiRango.Columns.Count)

MiRango2.Name = "MiTabla"
Columnas = MiRango2.Columns.Count

With Me.ListBox1

    .ColumnCount = Columnas
    .ColumnWidths = "20 pt;60 pt; 60 pt; 60 pt"
    .ColumnHeads = True
    .RowSource = "MiTabla"

End With

End Sub

Descarga el archivo de ejemplo

055 – Forrmularios Control ListBox Cuadro de lista – 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...