2013-08-23 96 views
0

我试图制作一个宏来更改几个数据透视表(不是全部)的过滤器,但是我在数据透视表上看到一个错误,下面是我的代码示例:无法获取数据透视表类的PivotFields属性

Sheets("Sheet1").PivotTables("PivotTable" & pivot_counter).PivotFields(_ 
"[year].[year].[year]").VisibleItemList = Array("") 

我的问题是:

1-使用VisibleItemList时,为什么我们使用透视字段(“【同期】【同期】【同期】。”)?为什么我们不得不重复它,它的含义是什么,在任何地方都不能做任何事情。

2-这个代码有什么错误?我的数据透视表有一个名为“年”的字段,过滤器设置为特定年份(比如说2013),我希望它在所有可能的年份都有所改变。

+0

这是录音代码吗?如果没有,当你为这一步记录代码时,它看起来像你的示例代码? –

+0

当我记录此步骤的代码时,我得到以下代码: ActiveSheet.PivotTables(“PivotTable1”)。PivotFields(“year”)。 _ 当前页= “(全部)” 随着ActiveSheet.PivotTables( “PivotTable1”)。透视字段( “年”) .PivotItems( “”)。可见=真 .PivotItems( “1900”)。可见=真 .PivotItems(“2009”)。Visible = True .PivotItems(“2010”)。Visible = True .PivotItems(“2011”)。Visible = True .PivotItems(“2012”)。Visible = True .PivotItems (“2013”​​)。Visible = True .PivotItems(“2014”)。Visible = True End With – Miticus

+0

问题是,来自记录宏的代码显示了该过滤器结果的所有可能解决方案。我想自动执行此操作,而不用枚举它们。因为,我将在我的数据透视表中为其他几个过滤器执行此操作,并且这些字段可能会随时间而改变(例如,不是从2009年到2014年,而是从2007年到2019年)。 – Miticus

回答

0
Sub Tester() 
    ShowAll ActiveSheet.PivotTables("PivotTable1").PivotFields("Year") 
End Sub 


Sub ShowAll(pf As PivotField) 
    Dim pi As PivotItem 
    Application.ScreenUpdating = False 
    For Each pi In pf.PivotItems 
     pi.Visible = True 
    Next pi 
    Application.ScreenUpdating = True 
End Sub 
+0

它并没有真正做任何事:S。我想从现在选择的所有过滤器更改为默认(全部)。 – Miticus

+0

好的,我解决了它。但我无法发布我的答案,因为我是新用户,在提问后至少需要等待8个小时。但我结束了使用你的宏ShowAll。谢谢您的帮助。 :) – Miticus