这是录制的宏:
ActiveSheet.PivotTables(“PivotTable1”)。PivotFields(_ “[Location]。[Sales Region - Location]。[Sales Region]”)。ClearAllFiltersActiveSheet.PivotTables( “PivotTable1”)……
这太简单了。在发布答案之前,我强烈建议您在将来尝试更多地调试代码。你的问题是你试图连接两个字符串,但你永远不会关闭第一个字符串。例如:
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]"
pt.EnableMultiplePageItems = False
PivotField
PageField
OLAP
"some name"
"[Foo].[Bar].[Baz].[Item]"
虽然我在这里,但我强烈建议避免使用 ActiveSheet 参考。这将导致你的问题。我也建议命名您的数据透视表。哎呀,说出你用的任何名字。它使您的代码更易于阅读。
ActiveSheet