H o l a:
Te anexo el código del formulario para filtrar:
Public hp, hl, hv, hf
'
Sub FiltrarVentas()
'Por.Dante Amor
'limpia la informacion para efectuar filtro avanzado
hf.Range("A:J").ClearContents
'coloca los criterios para efectuar los filtros avanzado
hv.Range("K2") = ">=" & Format(DTPicker1.Value, "yyyy-mm-dd")
hv.Range("L2") = "<=" & Format(DTPicker2.Value, "yyyy-mm-dd")
If Productos = "Seleccionar Producto" Then hv.Range("M2") = "" Else hv.Range("M2") = Productos.Value
If Tipología = "Seleccionar Línea" Then hv.Range("N2") = "" Else hv.Range("N2") = Tipología.Value
'efectua el filtro avanzado
u = hv.Range("A" & Rows.Count).End(xlUp).Row
hv.Range("A7:J" & u).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=hv.Range("K1:N2"), _
copytorange:=hf.Range("A1"), unique:=False
'ordena el filtro avanzado
u = hf.Range("A" & Rows.Count).End(xlUp).Row
If u = 1 Then Exit Sub
With hf.Sort
.SortFields.Clear: .SortFields.Add Key:=hf.Range("G2:G" & u)
.SetRange hf.Range("A1:J" & u): .Header = xlYes: .MatchCase = False
.Orientation = xlTopToBottom: .SortMethod = xlPinYin: .Apply
End With
'Actualiza el ancho de columnas del listbox y carga
hf.Cells.EntireColumn.AutoFit
cols = Array("A", "B", 0, "D", "E", "F", 0, "H", "I", "J")
For i = LBound(cols) To UBound(cols)
If cols(i) = 0 Then n = 0 Else n = Int(hf.Range(cols(i) & 1).Width + 5)
ancho = ancho & n & ";"
Next
ListBox1.ColumnWidths = ancho
ListBox1.RowSource = hf.Name & "!A2:J" & u
End Sub
'
Private Sub DTPicker1_Change()
Call FiltrarVentas
End Sub
Private Sub DTPicker2_Change()
Call FiltrarVentas
End Sub
Private Sub Productos_Change()
Call FiltrarVentas
End Sub
Private Sub Tipología_Change()
Call FiltrarVentas
End Sub
Private Sub UserForm_Activate()
'Por.Dante Amor
Set hp = Sheets("Producto")
Set hl = Sheets("Linea")
Set hv = Sheets("Ventas")
Set hf = Sheets("filtros")
'
'Carga combo productos
For i = 2 To hp.Range("A" & Rows.Count).End(xlUp).Row
Productos.AddItem hp.Cells(i, "A")
Next
'Carga combo linea
For i = 2 To hl.Range("A" & Rows.Count).End(xlUp).Row
Tipología.AddItem hl.Cells(i, "A")
Next
'Carga fechas
DTPicker1.Value = Date
DTPicker2.Value = Date
End Sub
'
Private Sub CommandButton2_Click()
'RESETEAR
'Carga fechas
DTPicker1.Value = Date
DTPicker2.Value = Date
'limpia la data del listbox
hf.Cells.Clear
End Sub
'
Private Sub CommandButton3_Click()
Unload Me
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias