的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 = FalsePivotFieldPageField。此外,您的第二个版本无法正常工作的原因是因为OLAP多维数据集无法识别"some name"。它必须知道整个维度,例如"[Foo].[Bar].[Baz].[Item]"

虽然我在这里,但我强烈建议避免ActiveSheet参考。这会导致你的问题。我建议命名您的数据透视表。哎呀,说出你使用的任何东西。它使您的代码更易于阅读。

+0

嗨布兰登,谢谢你的回应。这是录制的代码。当我尝试并运行它时会出错。数据透视表(_ “[Location]。[Sales Region - Location]。[Sales Region]”)。销售区域 - 位置]。[销售区域]“)。CurrentPage = _ ”[Location]。[Sales Region - Location]。[Sales Region]。[Craig]“ – ScanGuard

+0

@ScanGuard是'EnableMultiplePageItems =假集?另外,你确定'Craig'在'Sales Region'维度中吗? –

+0

嗨布兰登。代码和实际记录的一样,所以是的,Craig处于这个层面。 EnableMultiplePagePage项复选框不勾选。 – ScanGuard