实际上我正在尝试创建一些VBA代码,它将循环遍历带有数据透视表的一堆工作表,将某些条件应用于数据透视表(即根据变量更改字段/根据单元格值更改过滤器,正如我试图在下面的代码中演示)。这甚至没有接近运行(我是一个完整的初学者试图更新遗留代码),所以我正在寻找如何使用为我想要的结果定义的变量的指针。
我目前的问题是我似乎无法调用数据透视表来开始更改字段等。
Option Explicit
Dim MySheet As Worksheet
Dim MyPivot As PivotTable
Dim NewCat As String
Sub RefreshPivots()
For Each MySheet In ActiveWorkbook.Worksheets
For Each MyPivot In MySheet.PivotTables
NewCat = Worksheets("WorkingSheet").Range("B44").Value
MyPivot.RefreshTable
With ActiveSheet
.MyPivot.AddDataField
.MyPivot.PivotFields ("GuidelinePercent"), "Count of GuidelinePercent", xlCount
End With
Next MyPivot
Next MySheet
(循环中会有更多内容,这只是我遇到的第一个问题)。
我收到了:Run-time error '438' Object doesn't support this property or method
在线
With ActiveSheet.MyPivot.AddDataField
任何帮助都会很棒!
EDIT;
尝试时
With ActiveSheet
.PivotTables(MyPivot).AddDataField
.PivotTables(MyPivot).PivotFields ("GuidelinePercent"), "Count of GuidelinePercent", xlCount
End With
我在Run-time error'1004': Unable to get the Pivot Tables property of the Worksheet class
行上获得了.MyPivot.AddDataField
。
答案 0 :(得分:3)
您的循环为For Each MySheet In ActiveWorkbook.Worksheets
,因此当您稍后使用With ActiveSheet
时,它与MySheet
不同,因此您不需要使用ActiveSheet
},您可以直接使用您命名为PivotTable
的{{1}}对象。
尝试以下代码:
MyPivot
修改1 :
With MyPivot
.AddDataField .PivotFields("GuidelinePercent"), "Count of GuidelinePercent", xlCount
End With