运行时错误1004:无法获取Worksheet类的PivotTables属性

我录制了这个macros来更新16个图表的date范围。 但是,正如你所看到的,我得到一个运行时错误。

我已经看过与此有关的其他线程,但没有接近。 Excel上的帮助button也无济于事。 你能给些build议么? 这里是代码:

ActiveSheet.ChartObjects("Chart 18").Activate ActiveChart.Axes(xlCategory).Select ActiveSheet.ChartObjects("Chart 18").Activate With ActiveSheet.PivotTables("PivotTable2").PivotFields("Date") .PivotItems("Sep-15").Visible = False .PivotItems("Aug-14").Visible = True End With 

这里有一些简单的代码应该让你接近。 您需要将此代码中的“MySheet”更改为工作簿中包含数据透视表的工作表的名称,并且您的date字段必须真正以“Mmm-YY”格式进行文本格式化。

 Sub ShowThirteenDatesStartingLastMonth() Sheets("MySheet").PivotTables("PivotTable2").PivotCache.Refresh Dim Dt As String With Sheets("MySheet").PivotTables("PivotTable2").PivotFields("Date") For h = 1 To .PivotItems.Count - 1 On Error Resume Next .PivotItems(h).Visible = False Next h For i = 1 To 13 On Error Resume Next Dt = Format(DateSerial(Year(Date), Month(Date) - i, 1), "Mmm-YY") .PivotItems(Dt).Visible = True Next i End With End Sub 

没有工作簿的例子很难知道,但我会尝试命名工作表,而不是使用“activesheet”。 激活或select任何东西通常也是个不错的主意,相反,您应该允许代码尽可能多地完成工作,而不用select任何东西。 像这样的东西可能会更好地工作:

 With Sheets("MySheet").PivotTables("PivotTable2").PivotFields("Date") .PivotItems("Sep-15").Visible = False .PivotItems("Aug-14").Visible = True End With 

正如乔什所说,你应该引用确切的工作表名称,甚至可能是确切的数据透视表名称。

另外,您应该避免使用.Select ,而是为每个数据透视表声明一个variables,例如。