使用VBA宏切换数据透视表过滤器(按钮)

时间:2018-03-07 20:56:43

标签: excel vba excel-vba pivot-table

我需要一些相当简单的宏的帮助,但我无法做到这一点。所以我想要的是在滤镜之间切换 - 我有两种可能性,例如两种颜色 - 黑色和白色,我只想在其中有一个(我想添加按钮,所以它可以用作开关) 。这是情况

pivottable

我尝试过有条件的做法,当然它不起作用,但希望它能帮助你理解我的想法。如果启用了一个过滤器,则禁用另一个过滤器(因此显然也与之相关的对象)。

Sub Makro5()

ActiveSheet.PivotTables("PivotTable3").PivotFields("colour"). _
    CurrentPage = "(All)"

If ActiveSheet.PivotTables("PivotTable3").PivotFields("colour")
    .PivotItems("black").Visible = False
    .PivotItems("white").Visible = True
    Then ActiveSheet.PivotTables("PivotTable3").PivotFields ("colour")
    .PivotItems("black").Visible = True
    .PivotItems("white").Visible = False
    Else: ActiveSheet.PivotTables("PivotTable3").PivotFields ("colour")
    .PivotItems("black").Visible = False
    .PivotItems("white").Visible = True

End Sub

If有问题,因为它是红色的,我得到" Complie错误:语法错误"信息

2 个答案:

答案 0 :(得分:0)

您需要将ThenIf放在同一行。 (你可以使用_告诉VBA“代码在下一行继续”)

您还没有正确设置And,在检查它们是否可见之前,您可以看到“黑色”和“白色”?

试试这个:

Sub ToggleColour()
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("colour")
        If .PivotItems("white").Visible=True Then
            .CurrentPage = "black"
        Else
            .CurrentPage = "white"
        End If
    End With
End Sub

答案 1 :(得分:0)

这就是切片器的基础。

将光标放在pivottable数据区域内。然后转到插入>切片机>并选择colour。然后你会有一个切片器,你可以选择或。我不知道你是否可以在当前的excel版本中禁用多选,这样用户可以按ctrl并选择两者。但这似乎是一种简单的方法。

或者您可以运行以下代码,然后用户只需键入黑色或白色字段并应用过滤器:

Sub Test()

    Dim wb As Workbook
    Dim ws As Worksheet
    Dim pvt As PivotTable

    Set wb = ThisWorkbook
    Set ws = wb.Worksheets("Sheet3")
    Set pvt = ws.PivotTables("PivotTable3")

    Dim pvtField As PivotField
    Dim item As Long
    Dim item2 As Long

    Set pvtField = pvt.PivotFields("Colour")

    pvtField.EnableItemSelection = False

End Sub