我们有一个Excel-Workbook(2013),它在一个工作表中包含一些数据集,每个数据集都存储在一行中。在另一个工作表上,有一些数据透视表可以评估数据集。因为每个数据透视表都具有相同的筛选器,并且所选值应始终相同,所以只要将选择应用于一个数据透视表,就会将选择复制到其他数据透视表。
我们每年进行两次评估。这次发生错误:Run-time error '1004': unable to get the PivotFields property of the PivotTable class
。对工作簿进行的唯一更改是添加行。我三重检查错别字。
我在更改数据透视表的"日期" -filter的选择时录制了一个宏。它产生以下代码:
ActiveSheet.PivotTables("PivotTable2").PivotFields("Date").CurrentPage = _
"(All)"
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Date")
.PivotItems("11/30/2005").Visible = False
.PivotItems("12/5/2005").Visible = False
.PivotItems("12/8/2005").Visible = False
.PivotItems("12/12/2005").Visible = False
.PivotItems("12/15/2005").Visible = False
.PivotItems("12/28/2005").Visible = False
.PivotItems("12/30/2005").Visible = False
.PivotItems("1/8/2014").Visible = True
.PivotItems("2/5/2014").Visible = True
.PivotItems("2/17/2014").Visible = True
End With
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Date")
.PivotItems("6/13/2014").Visible = True
.PivotItems("9/16/2014").Visible = True
.PivotItems("9/17/2014").Visible = True
.PivotItems("10/10/2014").Visible = True
End With
当我尝试运行录制的宏时,第一行会出现与上面相同的运行时错误。在调试器中,访问ActiveSheet.PivotTables("PivotTable2")
有效。 ActiveSheet.PivotTables("PivotTable2").PivotFields("Date")
,ActiveSheet.PivotTables("PivotTable2").PivotFields(1)
或ActiveSheet.PivotTables("PivotTable2").PivotFields
都将1004
- 错误显示为值。
我对MSDN开发人员参考和一些论坛进行了一些研究,但我没有找到任何有用的信息。在调试器中,我没有找到以另一种方式访问数据透视表的方法。
如果有人能够解释错误发生的原因或者如何避免错误,我会非常高兴。
编辑: Excel崩溃几次后,工作簿无需进行任何有意更改(我怀疑它与我的PC有关,因为在另一台PC上发生了同样的错误)。我知道这听起来很奇怪,但确实发生了。由于我真的对解决方案感兴趣,所以我不会删除这个问题。