FÁCIL – ListBox con más de 10 columnas en Excel VBA
Un Control ActiveX ListBox de manera predeterminada nos permite tener 10 columnas, lo cual en ocasiones no nos funciona cuando tenemos un Formulario con muchos valores a capturar.
En este video tutorial veremos una manera fácil, sencilla y eficiente para poder tener un ListBox con más de 10 columnas en Excel usando VBA (Visual Basic para aplicaciones). Veremos dos opciones. La primera opción será cargar los valores de un rango al Control, y la segunda opción será pasar los valores de otros controles al ListBox. La segunda opción es la mejor.
Ver Video ListBox con más de 10 columnas
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
PRIMERO INTENTO. Cargar valores de un rango con más de 10 columnas
La primera opción será usando la propiedad RowSource de un ListBox para pasar los valore de un rango de celdas al Control. Si deseas pasar un rango, esta opción te sirve.
Figura 1. Pasar valores de un rango a un Cuadro de lista en Excel usando RowSource.
Código VBA del Formulario
Option Explicit 'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh Private Sub CommandButton1_Click() Dim Columnas As Integer Dim MiRango As Range Set MiRango = ThisWorkbook.Sheets("Hoja1").Range("A1").CurrentRegion Columnas = MiRango.Columns.Count Me.ListBox1.ColumnCount = Columnas Me.ListBox1.RowSource = MiRango.Address End Sub
SEGUNDO INTENTO. Valores de otros controles a un ListBox de más de 10 columnas
He visto algunos tutoriales donde se muestran métodos complejos para tener más de 10 columnas, pero lo ideal es tener nuestro código lo más eficiente posible y entre menos líneas de código, mejor.
En este ejemplo, tenemos 15 controles TextBox, pero pueden ser otros controles. Vamos a recorrer los valore de los 15 controles y pasarlos a 15 columnas del ListBox en Excel.
Como les comente, de manera predeterminada, un ListBox solo acepta 10 columnas, y cuando queremos usar más, nos aparece el siguiente error:
Figura 2. Error 380 cuando tenemos más 10 columnas en un ListBox de Excel VBA.
EL TRUCO para tener más de 10 columnas en un Cuadro de lista será insertar de manera temporal un rango de celdas de más de 10 columnas usando la propiedad List, para luego borrar ese elemento. Lo anterior permite setear el números de columnas del ListBox a más de 10, para luego poder insertar valores.
Código VBA del Formulario
Option Explicit 'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh Private Sub CommandButton1_Click() Dim i As Integer With Me.ListBox1 .AddItem For i = 1 To 15 .List(.ListCount - 1, i - 1) = Me.Controls("TextBox" & i).Value Next i End With End Sub Private Sub UserForm_Initialize() With Me.ListBox1 .ColumnCount = 15 .List = Range(Cells(1, 1), Cells(1, .ColumnCount)).Value .RemoveItem 0 End With End Sub
Descarga el archivo de ejemplo
ListBox de más de 10 columas en Excel.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.