带有数据透视表的Excel中的VBA代码

问题描述:

数据源将经常更改。在我刷新数据透视表后,我有以下代码来更新成绩透视项目字段。有时候4级是可用的,有时不是。基本上,如果4级是可用的,我希望它被选中,如果它不可用,那么可以选择所有的字段。出于某种原因,当我运行它时,它停在else行上。有什么建议么?带有数据透视表的Excel中的VBA代码

ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").ClearAllFilters 

If IsError(ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").CurrentPage = "4") Then 
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").CurrentPage = _ 
    "(All)"  
Else 
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").CurrentPage = "4"   
End If 
+0

您是否在下面的答案中尝试了代码?任何反馈将不胜感激 –

您不能捕获PivotField("Grade").CurrentPage误差IsError

尝试下面的代码:

ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").ClearAllFilters 

On Error Resume Next 
ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").CurrentPage = "4" 

If Err.Number <> 0 Then 
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").CurrentPage = _ 
    "(All)" 
    On Error GoTo 0 
End If 

注意:如果您使用With语句,你可以清理你的代码。在您的代码中,您可以使用With ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade")

+0

它工作的魅力!非常感谢您的帮助和关于使用的建议。 – user7303815

+0

@ user7303815 your'e welcome,请标记为“答复”(点击我帖子旁边的小** V **) –