多个复选框控制数据透视表过滤器

时间:2012-12-07 19:35:55

标签: excel vba excel-vba

我正在尝试创建一个用户友好的数据透视表控件。我有多个宏设置来控制数据透视表,如下所示:

Sub FilterA()
ActiveSheet.PivotTables("PivotTable2").PivotFields("A").CurrentPage = "TRUE"
ActiveSheet.PivotTables("PivotTable2").PivotFields("B").CurrentPage = "(All)"
ActiveSheet.PivotTables("PivotTable2").PivotFields("C").CurrentPage = "(All)"
ActiveSheet.PivotTables("PivotTable2").PivotFields("D").CurrentPage = "(All)"
ActiveSheet.PivotTables("PivotTable2").PivotFields("E").CurrentPage = "(All)"
ActiveSheet.PivotTables("PivotTable2").PivotFields("F").CurrentPage = "(All)"
End Sub

Sub FilterB()
ActiveSheet.PivotTables("PivotTable2").PivotFields("A").CurrentPage = "(All)"
ActiveSheet.PivotTables("PivotTable2").PivotFields("B").CurrentPage = "TRUE"
ActiveSheet.PivotTables("PivotTable2").PivotFields("C").CurrentPage = "(All)"
ActiveSheet.PivotTables("PivotTable2").PivotFields("D").CurrentPage = "(All)"
ActiveSheet.PivotTables("PivotTable2").PivotFields("E").CurrentPage = "(All)"
ActiveSheet.PivotTables("PivotTable2").PivotFields("F").CurrentPage = "(All)"
End Sub

依旧......

我想要做的是能够将这些附加到复选框,但能够为多个过滤器勾选多个框。 (例如A和C)我意识到我不能用上面的方法做到这一点。我有什么办法吗?我觉得我错过了什么。请记住,我对vba不是很精通。

谢谢!

1 个答案:

答案 0 :(得分:0)

您的基本语法如下:

Option Explicit

Sub UseCheckBox()

Dim cb as Checkbox

Set cb = Sheets(1).Controls("myCheckbox")

If cb.Value = True

      ActiveSheet.PivotTables("PivotTable2").PivotFields("A").CurrentPage = "TRUE"

End If

End Sub

您可以展开它以添加任意数量的复选框,循环浏览它们,更改条件等。