数据透视表filter在空时引发错误

我有多个数据透视表。 当我打开工作簿时,我强迫excelselect使用以下filter:

Sheets("PSD").Select 'Update table 7 Number of PSDs scheduled by Month ActiveSheet.PivotTables("PivotTable7").PivotFields("Adhoc").CurrentPage = _ "No" ActiveSheet.PivotTables("PivotTable7").PivotFields("Type").CurrentPage = _ "PSD Inspection" 'Update table 8 Number of PSDs scheduled by Month ActiveSheet.PivotTables("PivotTable8").PivotFields("Adhoc").CurrentPage = _ "No" ActiveSheet.PivotTables("PivotTable8").PivotFields("Type").CurrentPage = _ "PSD Inspection" 

问题是当没有数据与预期的filter,我得到一个错误。

我如何创build一个条件来检查filter是否存在,如果存在,强制filter到我想要的,否则跳过它。

会getpivotdata工作? 对于“索引”不存在的情况,getpivotdata将返回一个错误,否则对于“索引”存在但没有数据存在的情况,返回0(或者和为0)

而不是在VBA本身中使用getpivotdata,您可能更愿意添加一个新的工作表与getpivotdata和其他公式,确定您需要哪个filter,然后在您的VBA中引用此工作表。

如果你正确地devise了这个结构,那么你可以在这个新的工作表中改变规则/公式来驱动对过滤逻辑的改变,而不必编辑VBA,这样也可以使故障排除更容易。