我正在尝试制作一份报告表格,询问您要显示该报告的月份和年份。但是,有一个特定的数据透视表,该表使用四年范围显示趋势数据。
但是,我的工作簿上的所有数据透视表都是通过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连接的切片器中,还有另一种选择多个项目的方法吗?
答案 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