运行时错误 1004:无法获取工作表 class 的数据透视表 属性
Runtime Error 1004: Unable to get the PivotTables property of the Worksheet class
我录制了这个宏来更新16个图表的日期范围。但是,如您所见,我遇到了 运行 时间错误。
我查看了 Whosebug 上与此相关的其他线程,但 none 接近。 excel 上该死的帮助按钮也没有帮助。你能给些建议么?这是代码:
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
没有您的工作簿示例很难知道,但我会尝试命名 sheet 而不是使用 "activesheet"。激活或 select 任何东西通常也是一个坏主意,相反,您应该允许代码在不 select 任何东西的情况下尽可能多地工作。
这样的东西可能效果更好:
With Sheets("MySheet").PivotTables("PivotTable2").PivotFields("Date")
.PivotItems("Sep-15").Visible = False
.PivotItems("Aug-14").Visible = True
End With
正如 Josh 所说,您应该引用确切的 sheet 名称,甚至可能引用确切的 Pivot table 名称。
此外,您应该避免使用 .Select
,而是为每个数据透视图声明一个变量,例如。
这里有一些简单的代码,应该可以帮助您关闭。您需要将此代码中的 "MySheet" 更改为工作簿中包含枢轴 table 的 sheet 的名称,并且您的日期字段必须确实是 [=14= 中的文本格式]格式。
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
我录制了这个宏来更新16个图表的日期范围。但是,如您所见,我遇到了 运行 时间错误。
我查看了 Whosebug 上与此相关的其他线程,但 none 接近。 excel 上该死的帮助按钮也没有帮助。你能给些建议么?这是代码:
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
没有您的工作簿示例很难知道,但我会尝试命名 sheet 而不是使用 "activesheet"。激活或 select 任何东西通常也是一个坏主意,相反,您应该允许代码在不 select 任何东西的情况下尽可能多地工作。 这样的东西可能效果更好:
With Sheets("MySheet").PivotTables("PivotTable2").PivotFields("Date")
.PivotItems("Sep-15").Visible = False
.PivotItems("Aug-14").Visible = True
End With
正如 Josh 所说,您应该引用确切的 sheet 名称,甚至可能引用确切的 Pivot table 名称。
此外,您应该避免使用 .Select
,而是为每个数据透视图声明一个变量,例如。
这里有一些简单的代码,应该可以帮助您关闭。您需要将此代码中的 "MySheet" 更改为工作簿中包含枢轴 table 的 sheet 的名称,并且您的日期字段必须确实是 [=14= 中的文本格式]格式。
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