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.

Pasar valores de un rango a un Cuadro de lista en Excel usando RowSource

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:

Error 380 cuando tenemos más 10 columnas en un ListBox de Excel VBA

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.

You may also like...