我有一个带有2个过滤器的数据透视表“IncTrend”。 我已将这两个过滤器重命名为“Service1”和“Service2”(当这些表是从powerpivot创建时,它们最初都被称为服务)
在工作表的A2中,我有一个服务验证列表的名称,其中包含过滤器中项目的名称(它们完全匹配)。
我正在尝试编写将从A2中的“选择”中读取的VBA代码,并更改数据透视表过滤器“Service1”& “Service2”与之匹配。
前提是我将有许多不同的数据透视表,我需要更改过滤器以匹配不同的数据,但我甚至无法使用VBA进行更改。
我一直在
无法获取数据透视表类的PivotFields属性
非常感谢任何帮助。 这是数据透视表的SS。
我的代码是:
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
initialize();
});
答案 0 :(得分:2)
晚了三年,但这也许可以帮助试图找到相同问题答案的人。
下面是最终解决我的类似问题的代码。我最终将代码直接添加到特定的工作表模块,并添加了“ If Intersect”这一行。除此之外,它还应作为标准模块中的公共子模块。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A2:A3")) Is Nothing Then Exit Sub
Dim PT1 As PivotTable
Dim PF1 As PivotField
Dim Choice As String
Set PT1 = Worksheets("Main").PivotTables("IncTrend")
Set PF1 = PT1.PivotFields("[Inc Open].[Service].[Service]")
Choice = Worksheets("Main").Range("A2").Value
With PT1
PF1.CurrentPageName = "[Inc Open].[Service].&[" & Choice & "]"
End With
End Sub
答案 1 :(得分:0)
替换你的行:
PF1.CurrentPage.Name = Choice
使用:
With PF1
.ClearAllFilters
.CurrentPage = Choice
End With