Curso Excel VBA y Macros – Cap. 55 – Formularios – PARTE 1 Control ListBox ó Cuadro de lista
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
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.