如何在VBA中命名多层字段数据透视表

我有下面的代码,基于K2中input的内容,它基于此过滤我的数据透视表。 我不断收到一个错误,说(设置字段= pt.PivotFields),它调用字段的名称。 我试图影响的字段位于字段名称位置/子字段本地名称。 当我logging自己改变它的代码调用该字段如下:

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 

您正尝试将一个String数组分配给数据PivotField ,这是不会工作的。 这是将VisibleItemsList添加到PivotFields调用的结尾。

解决scheme

  • 如果你真的只想要PivotField ,摆脱VisibleItemsList
  • 如果你真正想要的是这个列表,你需要Dim Field as Variant来运行。 这将打破下游代码,所以我怀疑这是你的目标。

我怀疑你想要的前者是:

 Set Field = pt.PivotFields("[Locations].[Loc Name].[Location Name]") 

如果这是你真正想要使用的属性,你可以看看VisibleItemsList的MS支持 。 您的macros可能包含在代码中,因为您当时正在更改手动filter(这是属性控制的内容)。