我正在使用Excel,目前在一个工作表(Sheet2(中有这些多个数据透视表,我正在尝试使用组合框作为Sheet1中的过滤器进行控制。
所以基本上我想从 Sheet1 中的组合框中选择以过滤 Sheet2 中的所有数据透视表(大约 10 个左右(。
现在我似乎能够使用 VBA 在只有一个数据透视表的新文件中实现这一点,但在将其应用于我的实际工作表时,它一直给我错误消息。
以下是我用来成功管理的代码:
Sub Macro2()
Dim QtrChosen As String
QtrChosen = Worksheets("Database").Range("C3").Value
MsgBox QtrChosen
Dim PivotTable10 As PivotTable
Worksheets("PivotTable").PivotTables("PivotTable10").PivotFields("Qtr").ClearAllFilters
Worksheets("PivotTable").PivotTables("PivotTable10").PivotFields("Qtr"). _CurrentPage = QtrChosen
End Sub
上面的代码对我来说就像一个魅力,但下面的代码没有:
Sub MacroModuleName()
Dim ModulNameVariable As String
ModulNameVariable = Worksheets("MenuSheet").Range("G3").Value
Dim PivotTable1, PivotTable2, PivotTable3, PivotTable4, PivotTable5 As PivotTable
Worksheets("Pivot1Sheet").PivotTables("PivotTable1").PivotFields( _
"[ModulesDatabase].[Module Name].[Module Name]").ClearAllFilters
Worksheets("Pivot1Sheet").PivotTables("PivotTable1").PivotFields( _
"[ModulesDatabase].[Module Name].[Module Name]").CurrentPage = _
ModulNameVariable
End Sub
有人知道如何处理这个问题吗?任何见解或帮助将不胜感激。
在不了解有关您收到的错误消息类型的更多信息的情况下,您可能能够遍历工作表中的所有数据透视表并应用设置,如下所示(假设您将应用于工作表中的所有数据透视表,尽管您可以通过在循环期间测试透视表的名称来排除(。我假设以下内容 [ModulesDatabase].[Module Name].[Module Name]
是正确的。
笔记:
您将大多数数据透视表变量声明为变体,而不是注释中提到的数据透视表。
我的代码中没有显示组合框,所以我不知道您是否有一个链接的单元格,然后索引到列表中并向 Range("G3"(返回值?我也不清楚你是如何触发的。你把它绑在按钮上了吗?
我建议查看我在评论中提供的有关同步数据透视表和数据透视表更新((事件的链接,因为这可能比循环每个数据透视表并应用设置更有效。
Sub MacroModuleName()
Dim ModulNameVariable As String
ModulNameVariable = ThisWorkbook.Worksheets("MenuSheet").Range("G3").Value
Dim pvt As PivotTable
For Each pvt In ThisWorkbook.Worksheets("Pivot1Sheet")
pvt.PivotFields("[ModulesDatabase].[Module Name].[Module Name]").ClearAllFilters
pvt.PivotFields("[ModulesDatabase].[Module Name].[Module Name]").CurrentPage = _
ModulNameVariable
Next pvt
End Sub