Dam, Filtrar con 2 combobox Userform Vba

Con respecto a unos combobox que tengo, lo siguiente es: como ponerle condición a dos combobox que quiero hacer un filtrado desde un Userform, por ahora tengo este código que me funciona a la perfección con el combo1:

valor = ComboBox1.Value
Sheets("Autoridad").Select
Range("B3").AutoFilter Field:=2, Criteria1:=valor, Operator:=xlFilterValues
Range("B3").Select

El combo tiene insertado una lista desde otra hoja, este código me filtra los datos de mi tabla, pero si yo quiero filtrar ADICIONALMENTE con otro combo ya no se como realizarlo, es decir si elijo un dato del primer combo y luego el dato del segundo combo que también esta cargado desde una lista de una hoja, tengo este código de los combos que también me funcionan:

Private Sub UserForm_Initialize()
Dim rango1, rango2, celda As Range
Set rango1 = Range("Codigo")
Set rango2 = Range("Cargo")
For Each celda In rango1
ComboBox1.AddItem celda.Value
Next celda
For Each celda In rango2
ComboBox2.AddItem celda.Value
Next celda
End Sub

La pregunta espefica es como hago para hacer la consulta de, ya sea el combo1 o el combo2 o combo1 y combo2 a la vez, espero este clara mi consulta, gracias.

Nota:

El rango a filtrar para el Cbo1 es desde B3 hasta el infinito

El rango a filtrar para el Cbo2 es desde el J3 hasta el infinito

El resultado final seria mostrarlo en un Listbox con los siguientes datos que dejo un captura con las columnas resaltadas que quiero filtrar y mostrar en la lista...

GRACIAS!

1 respuesta

Respuesta
1

H o l a:

Envíame tu archivo con el formulario para programar la búsqueda.

Y algo importante, los registros filtrados los quieres ver en el listbox, pero después les vas a hacer algo, como modificar los datos o borrar el registro de la hoja, esto es importante conocer desde un principio, para saber cómo voy a hacer la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Juan Fer” y el título de esta pregunta.

Hola Dam, agradecerte previamente por el apoyo y confirmarte que ya te envié el archivo solicitado, gracias...

H o l a:

Te anexo las macros actualizadas

Private Sub ComboBox1_Change()
'Por.Dante Amor
    If ComboBox1 = "" Then Exit Sub
    If ComboBox1.ListIndex = -1 Then Exit Sub
    fila = ComboBox1.ListIndex + 2
    TextBox1 = Sheets("Listas").Cells(fila, 2)
End Sub
Private Sub CommandButton1_Click()
'Por.Dante Amor
    'Filtrar
    Set h1 = Sheets("Cargos")
    Set h3 = Sheets("Filtro")
    h3.Cells.ClearContents
    ListBox1.RowSource = ""
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    If ComboBox1 <> "" Then
        h1.Range("A2:AC" & u).AutoFilter Field:=2, Criteria1:=ComboBox1
    End If
    If ComboBox2 <> "" Then
        h1.Range("A2:AC" & u).AutoFilter Field:=10, Criteria1:=ComboBox2
    End If
    h1.Range("A2:O" & u).Copy h3.Range("A2")
    u = h3.Range("A" & Rows.Count).End(xlUp).Row
    cols = Array("C", "E", "F", "H", "I")
    For j = UBound(cols) To LBound(cols) Step -1
        h3.Columns(cols(j)).Delete
    Next
    h3.Cells.EntireColumn.AutoFit
    cad = "0 ;"
    For j = 2 To 10
        cad = cad & Int(h3.Cells(1, j).Width) + 2 & ";"
    Next
    ListBox1.RowSource = h3.Name & "!A3:O" & u
    ListBox1.ColumnWidths = cad
End Sub
'
Private Sub CommandButton2_Click()
    Unload Me
End Sub
'
Private Sub UserForm_Initialize()
    For Each celda In Range("CODIGO")
        ComboBox1.AddItem celda.Value
    Next celda
    For Each celda In Range("PROVINCIA")
        ComboBox2.AddItem celda.Value
    Next celda
End Sub

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

Muchas Gracias! déjame decirte que el código quedo Perfecto! felicidades eres un sorprenderte Programador, tengo dos consulta adicionales, ya que tengo una tabla similar con las mismas dimensiones, copié el código al mencionado, cambiando así los rangos y los  nombres de las hojas, pero al mostrar los datos filtrados en el Listbox el autosize "cad" que creaste a mi no me resulta   ='(   todo el código se mantuvo igual (cambiando rangos y nombres lógicamente) pero como menciono no me cambia automáticamente el ancho de las columnas del Listbox, generando así este resultado:

Gracias...

Tendría que revisar cómo dejaste le código.

Lo que hace que se ajuste en automático es cambiar el ancho de las columnas:

H3. Cells. EntireColumn. AutoFit

Con mucho gusto te ayudo con todas tus peticiones.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas