Hi thmsjlmnt
This Code is in the attached and appears to do as you describe. Please notice I've added some Dynamic Named Ranges to Data Sheet.
Let me know of issues...
Option Explicit
Sub Clear_Filter()
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
End Sub
Sub Filter_Dept()
Dim i As Integer, cnt As Integer
Application.ScreenUpdating = False
Call Clear_Filter
With ActiveSheet.ListBoxes("List Box 4")
For i = 1 To .ListCount
If .Selected(i) Then
ActiveSheet.Range(("A5"), Range("A5").End(xlDown)).AutoFilter Field:=1, Criteria1:=.List(i)
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
Sub Filter_Emp()
Dim i As Integer, cnt As Integer, myCol As Long
Application.ScreenUpdating = False
Call Clear_Filter
With ActiveSheet.ListBoxes("List Box 19")
For i = 1 To .ListCount
If .Selected(i) Then
ActiveSheet.Range(("A5"), Range("A5").End(xlDown)).AutoFilter Field:=2, Criteria1:=.List(i)
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
Sub Filter_Skill()
Dim i As Integer, cnt As Integer, myCol As Long
Application.ScreenUpdating = False
Call Clear_Filter
With ActiveSheet.ListBoxes("List Box 23")
For i = 1 To .ListCount
If .Selected(i) Then
myCol = WorksheetFunction.Match(.List(i), Rows("5:5"), 0)
ActiveSheet.Range(Cells(5, 1), Cells(5, 1).End(xlDown)).AutoFilter Field:=myCol, Criteria1:="<>"
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
Bookmarks