2017-09-06 95 views
0

有效地我试图创建一些VBA代码,将循环通过一堆工作表与透视表,将某些条件应用到数据透视表(即更改字段取决于一个变量/根据单元格值更改过滤器,正如我试图在下面的代码中演示的那样)。这甚至没有接近运行(我是一个完整的初学者试图更新遗留代码),所以我正在寻找指针,以了解如何使用为我想要的结果定义的变量。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 

(多很多在循环去,这仅仅是我所遇到的第一个问题)。

我越来越:行

With ActiveSheet.MyPivot.AddDataField

Run-time error '438' Object doesn't support this property or method任何帮助将是巨大的!

编辑;

当试图

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

添加您的代码没有指定'pivotfield'。 – kulapo

+0

我认为在这之前我得到一个错误甚至是一个问题......我会添加一行(尝试)添加一个字段。 – alex1stef2

+0

对于编辑,请加引号:'.PivotTables(“MyPivot”)' – Egalth

回答

3

你的For Each MySheet In ActiveWorkbook.Worksheets一个循环,所以,当你使用后With ActiveSheet它是不一样的片材MySheet,事实上你并不需要使用ActiveSheet,你可以直接使用的PivotTable对象你的名字MyPivot

尝试下面的代码:

With MyPivot 
    .AddDataField .PivotFields("GuidelinePercent"), "Count of GuidelinePercent", xlCount 
End With 

编辑1

Dim PvtFld As PivotField 

With MyPivot 
    On Error Resume Next 
    Set PvtFld = .PivotFields("GuidelinePercent") 
    On Error GoTo 0 
    If PvtFld Is Nothing Then 
     MsgBox "Error in setting the PivotField" 
    Else 
     .AddDataField PvtFld, "Count of " & PvtFld.Name, xlCount 
    End If 
End With 
+0

我一直在尝试的东西非常相似,这个版本显然是最简洁的,但我仍然得到一个运行时错误:'无法获取数据透视字段数据透视表类的属性。 – alex1stef2

+0

Kulapo刚刚删除了他的答案,但是当它悬停在错误之前的MyPivot上时,它等于“PivotTable2”,如果我手动转到此数据透视表并单击它,数据透视表字段列表将明确列出GuidelinePercent作为选项。 – alex1stef2

+0

@ alex1stef2让我给我的代码添加一个调试选项,尝试**编辑1 ** –

相关问题