在Stack Overflow,msdn,Ozgrid等这里经过一整天的研究之后,我终于辞职并在这里问我的问题。VBA PivotField CurrentPage问题 - 过滤器工作于“2018”,但不是“2017”
我有一些透视图显示数据透视表的值。图表在一张表中,在另一张表中透视表。在第三个工作表中,我有一个允许用户选择“2017”或“2018”的下拉菜单。基于答案,它过滤使用下面的代码的所有数据透视表:
Worksheets(8).PivotTables("Table1").PivotFields("Year").CurrentPage = year_target
Worksheets(8).PivotTables("Table2").PivotFields("Year").CurrentPage = year_target
Worksheets(8).PivotTables("Table3").PivotFields("Year").CurrentPage = year_target
现在,如果我选择“2018”,所有的数据透视表和图表更新,但如果我选择“2017年”我的错误:
Run-time error '5': Invalid procedure call or argument
变量year_target根据选择很好地更新到2017年和2018年,我也尝试了硬编码值而不是变量 - 再次2018年效果不错,但不2017年。如果我去手动点击“2017”数据透视表(即不使用VBA)它工作正常,透视表和图表过滤器预期在2017年。数据透视表存在名称“Table1”等。我的c包括问题是在CurrentPage函数中的某个地方(?)
你对解决方案有任何想法吗? 会很感激!
截图:1
编辑:一个星期后,我现在终于设法得到它的权利。我从未找到根本原因。我重新格式化并重新命名了所有内容,围绕数据透视表移动,为每个数据透视表创建新图表和新图表,以及我能想到的所有其他内容,并突然使其运行。我最好的猜测是有一些旧的格式被隐藏在某处,我在拼命去除的努力中。感谢您的支持。
看看我的答案和下面的代码,让我知道它的工作 –
我建议你录制宏,而今年手动更改所有三个数据透视表“,然后查看结果代码以查看是否有任何突出显示。也许在这里发布结果代码。 – jeffreyweir
@jeffreyweir我记录了下面的代码:。 子Macro6() ActiveSheet.PivotTables( “PivotTable5”)透视字段( “年”)当前页= “(全部)” 随着ActiveSheet.PivotTables( “PivotTable5” ).PivotFields( “年”) .PivotItems( “2017年”)。可见=假 .PivotItems( “2018”)。可见=真 尾随着 结束小组 当我跑重置过滤器和跑Macro6我收到以下错误: 运行时错误'1004': 无法获取数据透视表类的PivotFields属性 – sixty