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

时间:2015-10-01 16:15:37

标签: excel vba excel-vba runtime-error

我录制了这个宏来更新16个图表的日期范围。但是,正如您所看到的,我收到运行时错误。

我已经查看了与此相关的stackoverflow上的其他线程,但没有一个接近。 excel上的darn帮助按钮也没有帮助。你能给些建议么?这是代码:

this.studentGrades = arguments;

3 个答案:

答案 0 :(得分:2)

这里有一些简单的代码可以让你接近。您需要将此代码中的“MySheet”更改为工作簿中包含数据透视表的工作表的名称,并且您的日期字段必须真正采用“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

答案 1 :(得分:0)

如果没有工作簿的示例,很难知道,但我会尝试命名工作表而不是使用“活动表”。激活或选择任何东西通常也是一个坏主意,相反,你应该允许代码尽可能多地完成工作而不选择任何东西。 这样的事情可能会更好:

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

答案 2 :(得分:0)

正如乔希所说,你应该参考确切的工作表名称,甚至可能是精确的数据透视表名称。

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