Excel vba:创建一个宏以将切片器连接到多个数据透视表

时间:2017-05-01 02:33:05

标签: excel excel-vba pivot-table slicers vba

我正在尝试创建一个宏,它将更改三个数据透视表的数据源。然后,已经在工作表上的单个切片器将连接到所有三个数据透视表。数据透视表都将从同一个地方获取数据。

当我尝试这个时,我在将切片器连接到数据透视表2和3的步骤中出现错误。如果我只使用步骤更改每个数据透视表的数据源来运行宏,我注意到了切片器只有一个选项在“报告连接”框中而不是3。

这就是我所拥有的:

Sheets("Sales").Select
ActiveSheet.PivotTables("PivotTable1").ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Table3", Version _
:=xlPivotTableVersion15)

ActiveSheet.PivotTables("PivotTable2").ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Table3", Version _
:=xlPivotTableVersion15)

ActiveSheet.PivotTables("PivotTable3").ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Table3", Version _
:=xlPivotTableVersion15)


ActiveWorkbook.SlicerCaches("Slicer_Year").PivotTables.AddPivotTable ( _
ActiveSheet.PivotTables("PivotTable1"))
ActiveWorkbook.SlicerCaches("Slicer_Year").PivotTables.AddPivotTable ( _
ActiveSheet.PivotTables("PivotTable2"))
ActiveWorkbook.SlicerCaches("Slicer_Year").PivotTables.AddPivotTable ( _
ActiveSheet.PivotTables("PivotTable3"))

1 个答案:

答案 0 :(得分:0)

我有同样的问题,这是造成错误的最后一个括号。 所以你应该替换它:

ActiveWorkbook.SlicerCaches("Slicer_Year").PivotTables.AddPivotTable ( _
ActiveSheet.PivotTables("PivotTable2"))

用这个:

 ActiveWorkbook.SlicerCaches("Slicer_Year").PivotTables.AddPivotTable _
 ActiveSheet.PivotTables("PivotTable2")

你也可以用这种方式编写代码:

Dim WB as Workbook
Dim WS as Worksheet

Set WB = ActiveWorkbook
Set WS = WB.Sheets("Sales")

WB.SlicerCaches("Slicer_Year").PivotTables.AddPivotTable _ 
WS.PivotTables("PivotTable2")