Llenar listbox de varias columnas con datos variables dependiendo de combobox





Con esta macro de VBA para Excelprocedimiento de VBA o macro VBA Excel, como se suele denominar, se muestra como llenar un listbox que posee varias columnas, con la complicación que los datos no se encuentra en un rango continuo sino que surgen de una búsqueda de datos, los cuales dependen del valor que se ingrese en el combobox, es decir se selecciona un valor en el combo box, en base a ello se obtienen los datos, una vez que se encontraron los mismos se cargan al listbox, éste tiene varias columnas en el caso del ejemplo 5;  haz click al final de post para bajar el ejemplo.

El ejemplo  que se presenta aquí tiene una estrecha relación con la macro VBA for Excel, publicada en mi otro post que trata  sobre como llenar un listbox dependiendo de otro listbox y combobox





  

Antes de continuar, recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

El código que se encuentra a continuación se debe ingresar en un formulario que en el caso del ejemplo lleva el nombre de userform1, descargando el ejemplo lo podrás ver en funcionamiento, analizar, modificar y adaptar a lo que tú estés realizando el código está abierto sin ningún tipo de restricción.


Código a insertar en formulario

Private Sub Combobox1_Change()
'Evito movimientos de la pantalla
Application.ScreenUpdating = False
Dim fila, a As Integer
On Error Resume Next
'Borra datos del listbox
ListBox1.Clear
a = 0
fila = 2
'Bucle mientras la fila no esté vacia
While Sheets("hoja1").Cells(fila, 5) <> Empty
      dato = Combobox1
'Si el dato de la fila coincide con textbox carga los datos al listbox
  Var = Sheets("hoja1").Cells(fila, 5)
   If Sheets("hoja1").Cells(fila, 5) = dato Then

        'Copia los datos de la celda list box
        a = ListBox1.ListCount
        ListBox1.AddItem
        ListBox1.List(a, 0) = Sheets("hoja1").Cells(fila, 1)
        ListBox1.List(a, 1) = Sheets("hoja1").Cells(fila, 2)
        ListBox1.List(a, 2) = Sheets("hoja1").Cells(fila, 3)
        ListBox1.List(a, 3) = Sheets("hoja1").Cells(fila, 4)
        ListBox1.List(a, 4) = Sheets("hoja1").Cells(fila, 5)
   End If
  
'Aumento la fila para que pase a la siguiente
fila = fila + 1
Wend
'Devuelvo movimientos de la pantalla
Application.ScreenUpdating = True
End Sub

Private Sub UserForm_Initialize()
Label2.Caption = Sheets("hoja1").Cells(1, 1)
Label3.Caption = Sheets("hoja1").Cells(1, 2)
Label4.Caption = Sheets("hoja1").Cells(1, 3)
Label5.Caption = Sheets("hoja1").Cells(1, 4)
Label6.Caption = Sheets("hoja1").Cells(1, 5)

 
Combobox1.AddItem ("Ventas")
Combobox1.AddItem ("Cobranzas")
Combobox1.AddItem ("Deposito")
Combobox1.AddItem ("Contaduria")
Combobox1.AddItem ("Legales")
End Sub

CLICK para descargar en ejemplo en forma gratuita, si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página.



CLICK to download free example, If this post was helpful INVITE ME A COFFEE and so help keep up the page.       

Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends