Como puedo filtrar un listbox seleccionando un item de un Combobox en vba

No se de programación pero me gusta mucho aprender. Tengo un listbox con 4 columnas el cual me registran los abonos que hago a determinadas entidades, estos datos los almaceno en una tabla llamada TblAbonos y a su vez en una hoja llamada (Prestamos y Abonos) En las columnas G a la J y en su respectivo orden esta G = fecha, H = Nombre Entidad, I = Concepto y J = Valor abonado. De la misma forma tengo un combobox el cual me carga la tabla llamada (Entidad). Lo que quiero hacer es que cuando seleccione en el combobox una entidad ne filtre este listbox.

Respuesta

Primero en el userform en el evento activate pon este código

Private Sub UserForm_Activate()
Dim fila, final, Registro As Integer
Dim lista As String
    fila = 2
    Do While Sheets("Prestamos y Abono").Cells(fila, 8) <> "" 'para buscar la ultima fila vacia
        fila = fila + 1
    Loop
    final = fila - 1
    With Sheets("Prestamos y Abono") 'para cargar los datos al combo sin registros repetidos
    For fila = 2 To final
    Registro = WorksheetFunction.CountIf(.Range(.Cells(2, 8), .Cells(fila, 8)), .Cells(fila, 8))
    If Registro = 1 Then
        ComboBox1.AddItem .Cells(fila, 8)
    End If
    Next
    End With
    With ListBox1 'columnas y tamaño de las mismas en el listbox
    .ColumnCount = 4
    .ColumnWidths = "80 pt;50 pt;50 pt;60 pt"
    End With
End Sub

en el combobox en el evento change pon esto

Private Sub ComboBox1_Change()
ListBox1.Clear 'limpia el listbox
    For fila = 2 To Sheets("Prestamos y Abono").Range("H" & Rows.Count).End(xlUp).Row
        If Sheets("Prestamos y Abono").Cells(fila, 8) = Me.ComboBox1.Text Then
         n = ListBox1.ListCount
            ListBox1. AddItem
            ListBox1.List(n, 0) = Sheets("Prestamos y Abono"). Cells(fila, "G")
            ListBox1.List(n, 1) = Sheets("Prestamos y Abono"). Cells(fila, "H")
            ListBox1.List(n, 2) = Sheets("Prestamos y Abono"). Cells(fila, "I")
            ListBox1.List(n, 3) = Sheets("Prestamos y Abono"). Cells(fila, "J")
        End If
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas