我有以下代码,根据在K2中输入的内容,它会基于此过滤我的数据透视表。我一直收到一条错误,其中一行显示(Set Field = pt.PivotFields),该行调用该字段的名称。我想要影响的字段位于字段名称Locations / sub field loc name中。当我记录自己更改它时,代码调用以下字段:
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Locations].[Loc Name].[Location Name]").VisibleItemsList = Array( _
"[Locations].[Loc Name].[Location Name].&[CENTRAL MISSISSIPPI MED CTR (CMS-1)]")
'ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Locations].[Loc Name].[Location Acronym]").VisibleItemsList = Array("")
'ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Locations].[Loc Name].[Location Number]").VisibleItemsList = Array("")
关于我在单元格K2调用到枢轴字段中相应位置的方式的任何帮助都会很棒。
守则:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("K2:K3")) Is Nothing Then Exit Sub
Dim pt As PivotTable
Dim Field As PivotField
Dim NewCat As String
Set pt = Worksheets("Fact Trans").PivotTables("PivotTable1")
Set Field = pt.PivotFields("[Locations.Loc Name.Location Name]").VisibleItemsList
NewCat = Worksheets("Fact Trans").Range("K2").Value
With pt
Field.ClearAllFilters
Field.CurrentPage = NewCat
pt.RefreshTable
End With
End Sub
答案 0 :(得分:0)
您正在尝试将String
数组分配给PivotField
,但这不会起作用。这是将VisibleItemsList
添加到PivotFields
调用结尾的结果。
<强>解决方案强>
PivotField
,请摆脱VisibleItemsList
。Dim Field as Variant
以便它可以运行。这会打破下游代码,所以我怀疑这是你的目标。我怀疑你想要的是前者:
Set Field = pt.PivotFields("[Locations].[Loc Name].[Location Name]")
您可以查看MS support for VisibleItemsList
,如果这是您真正想要使用的属性。您的宏可能包含在代码中,因为您当时正在更改手动过滤器(这是该属性控制的)。