的Excel 2013 - 录制的宏错误在OLAP基于数据透视表
问题描述:
改变网页过滤器时,这是录制的宏:的Excel 2013 - 录制的宏错误在OLAP基于数据透视表
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]"
我已经改变了实际名称为“有些名”的帖子的目的。
我记录了这个宏,然后试图运行它。我得到一个错误:
Unable to set the CurrentPage property of the PivotField Class
我已经查看其他职位建议使用
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
这也将失败。
答
这太容易了。在发布答案之前,我强烈建议在未来尝试调试您的代码。你的问题是你试图连接两个字符串,但你永远不会关闭第一个字符串。例如:
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
参考。这会导致你的问题。我建议命名您的数据透视表。哎呀,说出你使用的任何东西。它使您的代码更易于阅读。
嗨布兰登,谢谢你的回应。这是录制的代码。当我尝试并运行它时会出错。数据透视表(_ “[Location]。[Sales Region - Location]。[Sales Region]”)。销售区域 - 位置]。[销售区域]“)。CurrentPage = _ ”[Location]。[Sales Region - Location]。[Sales Region]。[Craig]“ – ScanGuard
@ScanGuard是'EnableMultiplePageItems =假集?另外,你确定'Craig'在'Sales Region'维度中吗? –
嗨布兰登。代码和实际记录的一样,所以是的,Craig处于这个层面。 EnableMultiplePagePage项复选框不勾选。 – ScanGuard