As with PivotTables, you need to create the cache for a slicer before creating the slicer itself. To create the slicer cache use SlicerCaches.Add2, SlicerCaches being a property of the Workbook object.
SlicerCaches.Add(Source, SourceField, Name, SlicerCacheType)
Mandatory parameters are Source (the PivotTable) and SourceField– the field you want to create a slicer for.
To create the slicer use Slicers.Add, Slicers being a property of the SlicerCache object.
Slicers.Add(SlicerDestination, Level, Name, Caption, Top, Left, Width, Height)
The only mandatory parameter is SlicerDestination –the worksheet you want the slicer to appear on.
For some strange reason for both the Add2 and Add methods, if you name the parameters you get a runtime error.
Dim ws As Worksheet Set ws = ActiveSheet Dim wb As Workbook Set wb = ActiveWorkbook Dim PTcache As PivotCache Dim PT As PivotTable Dim SLcache As SlicerCache Dim SL As Slicer 'Define the cache for the PivotTable Set PTcache =wb.PivotCaches.Create(SourceType:=xlDatabase, _ SourceData:=Range("Sales_Data[#All]"),Version:=xlPivotTableVersion15) 'Create the PivotTable Set PT = ws.PivotTables.Add(PivotCache:=PTcache,_ TableDestination:=Range("J1"),TableName:="Sales Analysis") PT.AddFieldsRowFields:=Array("Region", "Branch"), _ ColumnFields:="Product",PageFields:="Product Category" PT.AddDataFieldField:=PT.PivotFields("Revenue"), _ Caption:="No ofTransactions", Function:=xlCount 'Create Slicer Cache Set SLcache = wb.SlicerCaches.Add2(PT,"Product Category", _ "ProdCatSlicerCache") 'Create Slicer Set SL = SLcache.Slicers.Add( _ ws, , "ProdCatSlicer","Select a Product Category", _ Range("G1").Top,Range("G1").Left) 'Define which values are not selected in the Slicer With SLcache .SlicerItems("COOKWARE").Selected = False .SlicerItems("CUTLERY").Selected = False End With
To clear the filter applied to a slicer…
ActiveWorkbook.SlicerCaches("ProdCatSlicerCache").ClearManualFilter