-
Thanks for your response. Here is the code.
Option Explicit
Private Sub CommandButton3_Click()
Dim bm As Range
Set bm = Selection
ApplyFilters
bm.Select
'Me.Range("A1").Select
End Sub
Private Sub ApplyFilters()
Dim r As Long
Dim c As Long
Dim ws As Worksheet
Dim TheFilterBits As Collection
Dim HeadingCol As Long
Set ws = Me
r = 3
HeadingCol = 6
On Error Resume Next
ws.ShowAllData
On Error GoTo 0
c = 1
Do While ws.Cells(HeadingCol, c) <> ""
If ws.Cells(r, c) <> "" Then
If Left(ws.Cells(r, c), 2) <> "//" Then
Set TheFilterBits = FilterBits(ws.Cells(r, c))
If TheFilterBits.Count = 1 Then
ws.Cells(HeadingCol, c).AutoFilter Field:=c, Criteria1:=TheFilterBits.Item(1)
Else ' must be 3
ws.Cells(HeadingCol, c).AutoFilter Field:=c, Criteria1:=TheFilterBits.Item(1), Operator:=TheFilterBits.Item(2), Criteria2:=TheFilterBits.Item(3)
End If
End If
End If
c = c + 1
Loop
End Sub
Private Function FilterBits(ByVal FilterString As String) As Collection
Dim l As Long
Set FilterBits = New Collection
FilterString = UCase(FilterString)
Select Case True
Case InStr(FilterString, " AND ") > 0
l = InStr(FilterString, " AND ")
FilterBits.Add Left(FilterString, l - 1)
FilterBits.Add 1
FilterBits.Add Mid(FilterString, l + 3 + 2)
Case InStr(FilterString, " OR ") > 0
l = InStr(FilterString, " OR ")
FilterBits.Add Left(FilterString, l - 1)
FilterBits.Add 2
FilterBits.Add Mid(FilterString, l + 2 + 2)
Case True
FilterBits.Add FilterString
End Select
End Function
Private Sub CommandButton2_Click()
Dim bm As Range
Set bm = Selection
On Error Resume Next
Me.ShowAllData
On Error GoTo 0
bm.Select
End Sub
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules