根据定义的变量设置枢轴过滤器

时间:2015-12-31 16:46:51

标签: vba pivot excel-2013

我有一个曾经在Excel 2007中工作的宏,但在最近升级到Excel 2013后停止工作。 宏根据从单元格值读取的已定义变量设置透视过滤器。旧代码如下:

Sub test()
Dim PremState As String
PremState = Sheets("FormData").Range("PremSt").Value
Sheets("DataPivot").Activate
ActiveSheet.PivotTables("PivotTable1").ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("PremSt_A").CurrentPage = PremState
End Sub

我在Excel 2013中录制了一个可以执行相同功能的新宏。我得到了以下代码示例:

ActiveSheet.PivotTables("PivotTable1").PivotFields( _
    "[Range].[PremSt_A].[PremSt_A]").CurrentPageName = "[Range].[PremSt_A].&[CA]"

这适用于手动选择的状态(在本例中为CA),但我无法使其与预定义的PremState变量一起使用。

如何在新代码中包含对已定义变量的引用?

1 个答案:

答案 0 :(得分:1)

尝试这样......

Sub test()
  Dim PremState As String
  PremState = Sheets("FormData").Range("PremSt").Value
  Sheets("DataPivot").Activate
  ActiveSheet.PivotTables("PivotTable1").ClearAllFilters
  ActiveSheet.PivotTables("PivotTable1").PivotFields( _
    "[Range].[PremSt_A].[PremSt_A]").CurrentPageName = _
    "[Range].[PremSt_A].&[" & PremState & "]"    
End Sub