2017-02-23 122 views
1

我有一个数据透视表“IncTrend”,带有2个过滤器。 两个我已经更名为“服务1”和“服务2”过滤器(他们原本当表从PowerPivot的创建都被称为服务)基于单元值的VBA数据透视表过滤器更改

在工作表中的A2我有命名服务验证列表的名称过滤器中的项目(它们完全匹配)。

我正在尝试编写一个VBA代码,它将读取A2中的“选项”,并将数据透视表过滤器“Service1”&“Service2”更改为与之匹配。

前提是我将有许多不同的数据透视表,其中包含我需要更改过滤器以匹配的不同数据透视表,但我甚至无法使用VBA获得更改。

我不断收到

无法获取数据透视表类

任何援助将不胜感激的透视字段属性。 这是数据透视表的SS。

enter image description here

我的代码是:

Sub Filter_Change() 

Dim WS As Worksheet: Set WS = ActiveWorkbook.Worksheets("Main") 
Dim PT1 As PivotTable: Set PT1 = WS.PivotTables("IncTrend") 
Dim PF1 As PivotField: Set PF1 = PT1.PivotFields("[Inc Open].[Service].[Service]") 
Dim Choice As String: Choice = Worksheets("Main").Range("A2").Value 

With PF1 
    .ClearAllFilters 
    .CurrentPage = Choice 
    '.PivotFilters.Add Type:=xlCaptionEquals, Value1:=Choice 
End With 
End Sub 
+0

你确定你的'PivotField'名字的拼写方式“Service1”?之间没有空间或东西? –

+0

我修改了它以确保它不会导致问题。我已编辑上面的代码,显示您的建议和我的更改。 – Fitzy

回答

0

替换您行:

PF1.CurrentPage.Name = Choice  

有了:

With PF1 
    .ClearAllFilters 
    .CurrentPage = Choice 
End With 
+0

谢谢你,我按照你的建议做了。它将筛选器更改为(全部),但是当它到达当前页面行时,出现“无法设置PivotField类的CurrentPage属性”。我用.PivotFilters.Add交换了当前页面的行。类型:= xlCaptionEquals,Value1:= WS.Range(“A2”)。Value并且现在得到“应用程序定义或对象定义的错误” – Fitzy

+0

@Fitzy你可以编辑你的文章包括你的'PivtoTable'的屏幕截图? –

+0

我已添加屏幕截图 – Fitzy

相关问题