有没有办法让宏检查是否存在特定的筛选选项



早上好,

我正在尝试创建一个宏,该宏将根据月份、季度或今年迄今为止的数据进行筛选。我的电子表格中有一个名为";MONYR";其中包括获取数据点的月份和年份。我遇到的问题是,我可能并不总是每个月都有数据。例如,下面的代码不断地触发";运行时错误"1004":无法获取PivotField类"的PivotItems属性;因为不存在";2019年1月";选项,因为我缺少该数据。是否有方法进行宏检查;2019年1月";选项存在,如果不存在,是否继续到下一行而不抛出错误?

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

提前感谢!

使用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

最新更新