New Member
April 9, 2021
Hello All,
I am trying to establish a connection between existing slicers and a new pivot table.
Background: I have slicers on the main dashboard, and I need to be able to run a macro that creates a report/pivot table based on the slicers chosen from the main dashboard.
My slicers are named as follows (I need all 4 to connect to the new pivot table):
-CODE
-Investigator
-Date
-Class
Code written so far:
Sub Pleasework()
Dim PSheet As Worksheet
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range
Dim LastRow As Long
Dim LastCol As Long
'Declare Variables
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("PivotTable").Delete
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "PivotTable"
Application.DisplayAlerts = True
Set PSheet = Worksheets("PivotTable")
Set DSheet = Worksheets("FY17-21 Data")
'Define Data Range
LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)
'Define Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="FilteredRevenue")
'Insert Blank Pivot Table
Set PTable = PCache.CreatePivotTable _
(TableDestination:=PSheet.Cells(1, 1), TableName:="FilteredRevenue")
'Insert Row Fields
With ActiveSheet.PivotTables("FilteredRevenue").PivotFields("CODE")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("FilteredRevenue").PivotFields("Investigator ")
.Orientation = xlRowField
.Position = 2
End With
'Insert Data Field
With ActiveSheet.PivotTables("FilteredRevenue").PivotFields("Care Days-Actual ")
.Orientation = xlDataField
.Position = 1
.Function = xlSum
.NumberFormat = "#,##0"
.Name = "Care Days"
End With
'Insert Data Field
With ActiveSheet.PivotTables("FilteredRevenue").PivotFields("Revenue-Actual ")
.Orientation = xlDataField
.Position = 2
.Function = xlSum
.NumberFormat = "$#,###.00"
.Name = "Revenue"
End With
End Sub
Any help is very appreciated!
Power Query
Power Pivot
Xtreme Pivot Tables
Excel for Decision Making
Excel for Finance
Excel Analysis Toolpak
Power BI
Excel
Word
Outlook
Excel Expert
Excel Customer Service
PowerPoint
November 8, 2013
Hi Hayley,
You should not create new caches for new pivot tables, if they share the same data source. Slicers cannot be connected to multiple pivot tables if they don't have the same pivot cache.
Here is a link where you will find useful codes for what you need.
https://www.contextures.com/xl.....vot11.html
ChangePivotCache is one code that you should run, then look into Create Pivot From Cache section (ShowCacheIndex will reveal the index you are looking for) To connect all slicers to all pivot tables, see this post: https://www.myonlinetraininghub.com/excel-forum/vba-macros/sync-slicers-through-vba#p15421
1 Guest(s)