早上好
我正在尝试创建一个宏,该宏将根据月份,季度或年初至今的数据进行过滤。电子表格中有一个名为“ MONYR”的列,其中包括获取数据点的月份和年份。我遇到的问题是,我可能不一定总是每个月都有数据。例如,下面的代码不断触发“运行时错误'1004':无法获取PivotField类的PivotItems属性”,因为由于我缺少该数据,MONYR字段中没有“ Jan-2019”选项。有没有办法使宏检查“ Jan-2019”选项是否存在,如果不存在,则继续进行下一行而不抛出错误?
With ActiveSheet.PivotTables("PivotTable1").PivotFields("MONYR")
.PivotItems("Jan-2019").Visible = True
.PivotItems("Feb-2019").Visible = True
.PivotItems("Mar-2019").Visible = True
.PivotItems("Apr-2019").Visible = False
.PivotItems("May-2019").Visible = False
.PivotItems("Jun-2019").Visible = False
.PivotItems("Jul-2019").Visible = False
.PivotItems("Aug-2019").Visible = False
.PivotItems("Sep-2019").Visible = False
.PivotItems("Oct-2019").Visible = False
.PivotItems("Nov-2019").Visible = False
.PivotItems("Dec-2019").Visible = False
End With
谢谢!
答案 0 :(得分:0)
使用On Error Resume Next
很有用的一种罕见情况-但不要忘记添加语句On Error Goto 0
。
On Error Resume Next
告诉VBA即使发生错误也要继续执行代码。在大多数情况下,这很糟糕,因为它隐藏了错误(并因此隐藏了代码问题)。但是,如果您确切知道特定行 会导致错误,并且可以继续,则此语句可以为您提供帮助。但是,一旦完成这些语句,您就应该将其更改回默认行为。
On Error Resume Next ' Skip to next line if pivot entry doesn't exist.
.PivotItems("Jan-2019").Visible = True
.PivotItems("Feb-2019").Visible = True
.PivotItems("Mar-2019").Visible = True
(...)
On Error Goto 0