我正在寻求您的协助,并出现以下错误。
我有一些VBA代码可以在包含数据透视表的工作表中打开工作簿和副本。
然后代码选择数据透视表,按日期过滤,并复制一些字段。
此功能在首次使用时非常有效。但是,当此报告在一天内多次使用时,会遇到以下错误:
问题在于分配数据透视表名称,因为VBA只使用系统默认值。代码如下:
Sheets("Sheet1").Select
ActiveWorkbook.ShowPivotTableFieldList = False
ActiveSheet.PivotTables("PivotTable1").PivotFields("Date ").AutoSort _
xlDescending, "Date "
是否有另一种方法可以动态选择数据透视表而不管名称?
或者,是否有代码在执行结束时清除历史记录,以便每次运行报表时它都是1号轴?
非常感谢任何帮助。
提前致谢
答案 0 :(得分:2)
如果你知道只有一个数据透视表(因为你的帖子似乎已经打算传达,虽然我可能误解了这个),但最好使用索引而不是名称,因为名称将是如果新的数据透视表是在另一个存在时创建的,则会有所不同。将您的电话改为:
If Sheets("Sheet1").PivotTables.Count <> 0 Then
Sheets("Sheet1").PivotTables(1).PivotFields("Date ").AutoSort xlDescending, "Date "
End If
注意我也删除了&#34;选择&#34;用法,因为这被认为是variety of reasons的不良做法。