连接到Power Pivot的Excel Slicer-选择多个Slicer项目

时间:2019-11-29 22:00:59

标签: excel vba pivot-table powerpivot slicers

我正在尝试制作一份报告表格,询问您要显示该报告的月份和年份。但是,有一个特定的数据透视表,该表使用四年范围显示趋势数据。

但是,我的工作簿上的所有数据透视表都是通过Power Pivot /数据模型连接的。 Using this source here,我仅能轻松地将切片器更改为单项。

一个有效的示例:

ActiveWorkbook.SlicerCaches("Slicer_Month2").VisibleSlicerItemsList = "[Calendar].[Month].&[" & frmGen.cbMonth.Text & "]"

但是当我使用循环替换切片器中的多个选择时,在完成所有选择的循环之后,我遇到了错误,错误为“ 28”:堆栈空间不足。

    For i = 0 To 3 Step 1
        ActiveWorkbook.SlicerCaches("Slicer_Year").VisibleSlicerItemsList(i + 1) = "[Calendar].[Month].&[" & frmGen.txtYear.Text - 3 + i & "]"
    Next

由于切片器上已经选择了四个,所以它应该能够替换它,这在我将代码添加到监视窗口时也会显示出来。但是,即使我减少了循环计数,它始终会在循环后显示该错误。

在通过Power Pivot连接的切片器中,还有另一种选择多个项目的方法吗?

1 个答案:

答案 0 :(得分:1)

感谢Damian为我的问题提供线索,我只需要更新链接到切片器的数据透视表之一,就可以更新其他数据透视表了。

For i = 0 To 3 Step 1
    ar(i) = "[Calendar].[Year].&[" & frmGen.txtYear.Text - 3 + i & "]"
Next

ActiveWorkbook.Sheets("pg2").PivotTables("pvtPg2_SPARK").PivotFields("[Calendar].[Year].[Year]").VisibleItemsList = ar