¿Cómo puedo pasar datos de Excel a un listbox VBA?

Espero puedan ayudarme de verdad, tengo un formulario que tiene 2 combobox, uno de Modelo y otro de Suministro, ya están condicionadas, los suministros dependen del Modelo que se elija, hasta ahí todo bien lo que quiero hacer ahora es por ejemplo escoger un modelo y un suministro y buscar en una hoja de Excel los que coincidan con el valor de los combobox y traer esa información para poder visulizarla en un listbox que esta en el mismo formulario, por ejemplo:

Modelo: XEROX 7835 Suministro: Toner Negro

En el Excel tengo varias columnas, una que es Modelo, Suministro, Cantidad y Fecha:

Modelo Suministro Cantidad Fecha

XEROX 7835         Toner Negro                5                       12/02/2017

XEROX 7835         Toner Negro                7                        05/03/2017

XEROX 6600         Toner Amarillo            6                        14/04/2017

XEROX 7835         Toner Magneta           3                        15/04/2017

Entonces le doy clic en el botón buscar y en el mismo formulario debajo de los combobox, quiero que me salga lo siguiente:

    Modelo                Suministro            Cantidad                Fecha

XEROX 7835         Toner Negro                5                       12/02/2017

XEROX 7835         Toner Negro                7                        05/03/2017

Osea que compare el valor del combobox de modelo con la fila de modelo de Excel y a la vez compare la fila de suministro con el valor del combobox de suministro, si los dos son iguales entonces copiar toda la información al listbox.

Espero puedan ayudarme y espero haber sido clara con lo que necesito.

1 Respuesta

Respuesta
1

Pon el siguiente código en tu formulario. No es necesario el botón, cada que selecciones un dato del combo1 o del combo2 en automático realizará la búsqueda.

Cambia en la macro "Hoja3" por el nombre de tu hoja donde tienes tus datos.

El listbox deberá tener la propiedad de ColumnCount en 4

La macro empieza a revisar desde la fila 2, si quieres que empiece en otra fila, cambia el 2 por el número de fila, en esta línea:

For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row

El código completo:

Private Sub ComboBox1_Change()
    Call Buscar
End Sub
Private Sub ComboBox2_Change()
    Call Buscar
End Sub
'
Sub Buscar()
'Por.Dante Amor
    Set h = Sheets("Hoja3")
    ListBox1.Clear
    If ComboBox1 = "" Or ComboBox2 = "" Then Exit Sub
    If ComboBox1.ListIndex = -1 Or ComboBox2.ListIndex = -1 Then Exit Sub
    '
    For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
        If h.Cells(i, "A") = ComboBox1 And h.Cells(i, "B") = ComboBox2 Then
            ListBox1.AddItem h.Cells(i, "A")
            ListBox1.List(ListBox1.ListCount - 1, 1) = h.Cells(i, "B")
            ListBox1.List(ListBox1.ListCount - 1, 2) = h.Cells(i, "C")
            ListBox1.List(ListBox1.ListCount - 1, 3) = h.Cells(i, "D")
        End If
    Next
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Muchísimas gracias por tu tiempo y por ayudarme, en serio.

Me sale ese error, hice algunos cambios como que empezara por 6 y no por 2 y que tome la columna B como la primera y bueno en mi caso es la Hoja6, ojala puedas ayudarme

Este es el error que me sale.

Gracias :)

Ya me salio! :D :D

El error era que en todo el código yo estaba poniendo el nombre de la hoja, pero según lo que me da el Visual:

Y normal, pero cuando utilizo el Sheets me pide el nombre de la hoja que me sale en el Excel, yo estaba poniendo Sheets("Hoja6"), cuando era Sheets("Envíos (L-C)")

:) :) :)

Gracias :D

Con todo gusto, avísame cualquier duda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas