Sub single_inv() 'autofilter on a single invoice
Dim rng As Range
Set rng = Range("table1").ListObject.DataBodyRange
With Sheets("data")
.Activate
rng.AutoFilter Field:=6, Criteria1:=Sheets("search").Range("b4")
End With
End Sub
'========================================================================
Sub multiple_inv() 'autofilter on a multiple invoices
Dim ms_rng As Range
Dim fl_rng As Range
Dim temparray As Variant
Dim mycriteria() As String
Set ms_rng = Range("table1").ListObject.DataBodyRange 'master range
fl_lr = Sheets("search").Cells(Rows.Count, 2).End(xlUp).Row 'lastrow in lookupvalue range
Sheets("search").Activate
temparray = Sheets("search").Range(Cells(4, 2), Cells(fl_lr, 2)).Value 'temp array with lookup values
ReDim mycriteria(1 To UBound(temparray))
For i = 1 To UBound(temparray)
mycriteria(i) = temparray(i, 1)
Next
Sheets("data").Activate
With Sheets("data")
ms_rng.AutoFilter Field:=6, Criteria1:=mycriteria, Operator:=xlFilterValues
End With
End Sub
'========================================================================
Sub single_com() 'autofilter on a single Company
Dim rng As Range
Set rng = Range("table1").ListObject.DataBodyRange
With Sheets("data")
rng.AutoFilter Field:=2, Criteria1:=Sheets("search").Range("d4")
End With
End Sub
'========================================================================
Sub salesman() 'autofilter on a single salesman
Dim rng As Range
Set rng = Range("table1").ListObject.DataBodyRange
With Sheets("data")
rng.AutoFilter Field:=11, Criteria1:=Sheets("search").Range("d7")
End With
End Sub
'========================================================================
Sub perform() 'perform autofilter to select data based on criteria set on search sheet
Dim cb As CheckBox
For Each cb In ActiveSheet.CheckBoxes
If cb.Value = xlOn Then cb.Value = xlOff
Next cb
Application.ScreenUpdating = False
lr = Sheets("search").Cells(Rows.Count, 2).End(xlUp).Row
Range("TABLE1").ListObject.DataBodyRange.AutoFilter
With Sheets("search")
On Error Resume Next
s = Sheets("search").Range("inv").SpecialCells(xlCellTypeConstants).Count
If s > 1 Then
If .Range("d4") <> "" Then MsgBox "Searching Multiple Invoices, Client Name will exempted from search", vbInformation
If .Range("d7") <> "" Then MsgBox "Searching Multiple Invoices, Salesman Name will exempted from search", vbInformation
Range("table1").ListObject.DataBodyRange.AutoFilter
multiple_inv
results
ElseIf s = 1 And .Range("D4") = "" And .Range("d7") = "" Then
Range("table1").ListObject.DataBodyRange.AutoFilter
single_inv
results
ElseIf s = 1 And .Range("d4") <> "" And .Range("d7") = "" Then
Range("table1").ListObject.DataBodyRange.AutoFilter
single_inv
single_com
results
ElseIf s = 1 And .Range("d4") = "" And .Range("d7") <> "" Then
Range("table1").ListObject.DataBodyRange.AutoFilter
single_inv
salesman
results
ElseIf s = 1 And .Range("d4") <> "" And .Range("d7") <> "" Then
MsgBox "Please remove either Client or Salesman from search Criteria", vbCritical
ElseIf s = "" And .Range("d4") <> "" And .Range("d7") = "" Then
Range("table1").ListObject.DataBodyRange.AutoFilter
single_com
results
ElseIf s = "" And .Range("d4") = "" And .Range("d7") <> "" Then
Range("table1").ListObject.DataBodyRange.AutoFilter
salesman
results
End If
Sheets("search").Activate
End With
Application.ScreenUpdating = True
Exit Sub
End Sub
'========================================================================
Sub results() 'fetching the results
Dim r1, r2, r3, r4, r5, r6, r7, r8, r9
Dim myrng As Range
If Sheets("data").ListObjects("table1").Range.Columns(1).SpecialCells(xlCellTypeVisible).Count < 2 Then
MsgBox "No data to reflect"
Exit Sub
End If
With Sheets("search")
srch_lr = .Cells(Rows.Count, 8).End(xlUp).Row
If srch_lr > 3 Then
.Range(.Cells(4, 8), .Cells(srch_lr, 16)).ClearContents
.Range(.Cells(4, 8), .Cells(srch_lr, 15)).ClearFormats
End If
End With
On Error Resume Next
Set r1 = Range("table1").ListObject.ListColumns(6).DataBodyRange.SpecialCells(xlCellTypeVisible)
Set r2 = Range("table1").ListObject.ListColumns(7).DataBodyRange.SpecialCells(xlCellTypeVisible)
Set r3 = Range("table1").ListObject.ListColumns(8).DataBodyRange.SpecialCells(xlCellTypeVisible)
Set r4 = Range("table1").ListObject.ListColumns(2).DataBodyRange.SpecialCells(xlCellTypeVisible)
Set r5 = Range("table1").ListObject.ListColumns(3).DataBodyRange.SpecialCells(xlCellTypeVisible)
Set r6 = Range("table1").ListObject.ListColumns(5).DataBodyRange.SpecialCells(xlCellTypeVisible)
Set r7 = Range("table1").ListObject.ListColumns(11).DataBodyRange.SpecialCells(xlCellTypeVisible)
Set r8 = Range("table1").ListObject.ListColumns(10).DataBodyRange.SpecialCells(xlCellTypeVisible)
Set r9 = Range("table1").ListObject.ListColumns(12).DataBodyRange.SpecialCells(xlCellTypeVisible)
'Invoice # Inv Date Inv Amount Client Client # Salesman Js Sales Status Date Status
srch_lr = Sheets("search").Cells(Rows.Count, 8).End(xlUp).Row
r1.Copy
Sheets("search").Range("h4").PasteSpecial Paste:=xlPasteValues
r2.Copy
Sheets("search").Range("i4").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Sheets("search").Range("i:i").EntireColumn.AutoFit
r3.Copy
Sheets("search").Range("j4").PasteSpecial Paste:=xlPasteValues
r4.Copy
Sheets("search").Range("k4").PasteSpecial Paste:=xlPasteValues
Sheets("search").Range("k:k").EntireColumn.AutoFit
r5.Copy
Sheets("search").Range("l4").PasteSpecial Paste:=xlPasteValues
r6.Copy
Sheets("search").Range("m4").PasteSpecial Paste:=xlPasteValues
r7.Copy
Sheets("search").Range("n4").PasteSpecial Paste:=xlPasteValues
r8.Copy
Sheets("search").Range("p4").PasteSpecial Paste:=xlPasteValues
r9.Copy
Sheets("search").Range("o4").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Sheets("search").Range("o:o").EntireColumn.AutoFit
Application.CutCopyMode = xlCopy
Range("table1").ListObject.DataBodyRange.AutoFilter
End Sub
'========================================================================
Sub active_rows() 'select rows with activated checkboxes
Dim cb As CheckBox
With Sheets("emaildata")
.Activate
.Range("A1").Select
.Range(Selection, Selection.End(xlToRight)).Select
.Range(Selection, Selection.End(xlDown)).Select
Selection.Delete
End With
Sheets("search").Activate
Sheets("search").Range(Cells(3, 8), Cells(3, 16)).Copy Sheets("emaildata").Range("a1")
For Each cb In ActiveSheet.CheckBoxes
lr = Sheets("emaildata").Cells(Rows.Count, 1).End(xlUp).Row
If Sheets("emaildata").Cells(lr, 1) = "" Then
lr = 1
Else
lr = lr + 1
End If
If cb.Value = xlOn Then
s = Range(Range(cb.LinkedCell).Address).Row
Sheets("search").Range(Cells(s, 8), Cells(s, 16)).Select
Selection.Copy
Sheets("emaildata").Cells(lr, 1).PasteSpecial
Application.CutCopyMode = False
End If
Next cb
With Sheets("emaildata")
.Activate
.Range("A1").Select
.Range(Selection, Selection.End(xlToRight)).Select
.Range(Selection, Selection.End(xlDown)).Select
End With
End Sub