这是录制的宏:
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Location].[Sales Region - Location].[Sales Region]").ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Location].[Sales Region - Location].[Sales Region]").CurrentPage = _
"[Location].[Sales Region - Location].[Sales Region].&[some name]"
出于帖子的目的,我已将实际名称更改为“某个名称”。
我记录了那个宏,然后尝试运行它。我收到一个错误:
无法设置PivotField类的CurrentPage属性
我查看了其他建议使用
的帖子Dim pt As PivotTable
Dim NewRSM As String
NewRSM = "some name"
Set pt = ActiveSheet.PivotTables("PivotTable1")
With pt
.PivotFields("[Location].[Sales Region - Location].[Sales Region]").ClearAllFilters
.PivotFields("[Location].[Sales Region - Location].[Sales Region]").CurrentPage = NewRSM
End With
pt.RefreshTable
这也失败了。
答案 0 :(得分:0)
这太简单了。在发布答案之前,我强烈建议您在将来尝试更多地调试代码。你的问题是你试图连接两个字符串,但你永远不会关闭第一个字符串。例如:
Dim Foo as String
Foo = "Apples"
Debug.Print "I like Foo!"
Debug.Print "I Like " & Foo & "!"
尝试一下,看看你是否可以破译正在发生的事情。
现在为解决方案。同样的方法,小修复:
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Location].[Sales Region - Location].[Sales Region]").CurrentPage = _
"[Location].[Sales Region - Location].[Sales Region].&[" & SomeName & "]"
瞧!要连接字符串,必须以与在别处使用它相同的方式使用该变量。也就是说,将变量放在引号之外,并将这些部分连接在一起。
值得注意的是,只有pt.EnableMultiplePageItems = False
和PivotField
为PageField
时,这两项才有效。此外,您的第二个版本不起作用的原因是OLAP
多维数据集无法识别"some name"
。它必须知道整个维度,例如"[Foo].[Bar].[Baz].[Item]"
虽然我在这里,但强烈建议您避免使用ActiveSheet
参考。这将导致你的问题。我也建议命名您的数据透视表。哎呀,说出你用的任何名字。它使您的代码更易于阅读。