Jeg finder inspiration i denne kode:
Sub apply_autofilter_across_worksheets()
'Updateby Extendoffice 20160623
Dim xWs As Worksheet
On Error Resume Next
For Each xWs In Worksheets
xWs.Range("A1").AutoFilter 1, "=KTE"
Next
End Sub
Men her mangler du at kunne hive de kriterier brugeren vælger på fane1 - der finder jeg dette:
https://stackoverflow.com/questions/44936926/how-do-i-get-filter-criteria-in-excel-2016-using-vbaSom dog har nogle shortcommings, f.eks. at den kun hiver et kriterie som jeg forstår det, og at den ikke fanger kolonnen.
Mit forslag vil derfor vælge at man skal skrive ved siden af i en celle hvad man vil filtrere på, eller også have det som en popup hvor man svarer.
Jeg har lavet førstnævnte løsning her:
Sub apply_autofilter_across_worksheets()
'Updateby Extendoffice 20160623
Dim xWs As Worksheet
Dim strFilterColumnB As String
Dim strFilterColumnC As String
strFilterColumnB1 = Range("D37").Value
strFilterColumnB2 = Range("E37").Value
strFilterColumnB3 = Range("F37").Value
strfilterColumnC1 = Range("D39").Value
strFilterColumnC2 = Range("E39").Value
strFilterColumnC3 = Range("F39").Value
On Error Resume Next
For Each xWs In Worksheets
With xWs.Range("B2:G2")
.AutoFilter
.AutoFilter Field:=1, Criteria1:=Array(strFilterColumnB1, strFilterColumnB2, strFilterColumnB3), Operator:=xlFilterValues
.AutoFilter Field:=2, Criteria1:=Array(strfilterColumnC1, strFilterColumnC2, strFilterColumnC3), Operator:=xlFilterValues
End With
Next
End Sub
Jeg overvejede noget hvor man kunne læse række B når der er filtreret og således populere mine strFIlterColumn variable, men jeg er nok ikke helt skarp til at få den til at læse arrays - måske andre kan noget der.
Se filen:
https://www.dropbox.com/s/mh2eqgwaazlvl5c/Pricelist.xlsb?dl=0