Sub FilterPivot(ParamArray PivotCriteria() As Variant) '宣告參數陣列 Dim Pf As PivotField Dim i As Long Dim Item As Variant Dim ProfitCenter As Variant Set Pf = ActiveSheet.PivotTables("Pivot1").PivotFields("Item") ProfitCenter = PivotCriteria '呼叫參數陣列 'At least one item must remain visible in the PivotTable at all times, so make the first item visible. 'At the end of the routine, check if it actually should be visible. With Pf .PivotItems(1).Visible = True For i = 2 To .PivotItems.Count If .PivotItems(i).Visible Then .PivotItems(i).Visible = False 'Execpt for PivotItem(1). Hide each item if it isn't already hidden. Next i On Error Resume Next 'In case one of the items isn't found. For Each Item In ProfitCenter .PivotItems(Item).Visible = True Next Item On Error GoTo 0 'Hide the first PivotItem, unless it is one of the countries of interest. On Error Resume Next If InStr(UCase(Join(ProfitCenter, "|")), UCase(.PivotItems(1))) = 0 Then .PivotItems(1).Visible = False If Err.Number <> 0 Then .ClearAllFilters End If On Error GoTo 0 End With End Sub '============================================================================================================================================ Sub PivotFilterOld() Dim SheetName, PivotTable As String Dim PvtTbl As PivotTable Dim pvtitm As PivotItem Dim var1, var2, var3, var4, var5, var6, var7, var8, var9, var10 As String, Pi As PivotItem '--------------------------------------------------- 'Input var1 ~ var10 by manual. '--------------------------------------------------- SheetName = "Raw" PivotTable = "Pivot1" var1 = "A" '1st filter criteria var2 = "B" '2nd filter criteria var3 = "C" '3st filter criteria var4 = "D" '4th filter criteria var5 = "E" '5th filter criteria var6 = "" var7 = "" var8 = "" var9 = "" var10 = "" With Worksheets(SheetName).PivotTables(PivotTable).PivotFields("Item") .ClearAllFilters For Each Pi In .PivotItems On Error Resume Next Select Case Pi.Name Case var1, var2, var3, var4, var5, var6, var7, var8, var9, var10 Pi.Visible = True Case Else Pi.Visible = False End Select Next End With End Sub