首页 > 解决方案 > A1 值更改时选择透视切片器中的项目

问题描述

当我更改“A1”值时,我试图在 Pivot Slicer 中选择一个项目。
因此,当我将“A1”值更改为“ABC”时,代码应在切片器项中查找“ABC”并选择它。
“A1”值将与切片器中的项目相同。

这是我的尝试,但似乎不起作用并且看起来不对:(

Private Sub WorkSheet_Change(ByVal Target As Range)

Dim i As Integer
Dim ws As Worksheet
Set ws = ActiveSheet

If Not Intersect(Target, Range("A1")) Is Nothing Then
    For i = 1 To ActiveWorkbook.SlicerCaches("Slicer_Test").SlicerItems.Count
        If ActiveWorkbook.SlicerCaches("Slicer_Test").SlicerItems(i).Value = ActiveSheet.Range("A1") Then
           ActiveWorkbook.SlicerCaches("Slicer_Test").SlicerItems(i).Selected = True
        Else
           ActiveWorkbook.SlicerCaches("Slicer_Test").SlicerItems(i).Selected = False
        End If
    Next
End If 
End Sub

先感谢您。

标签: excelvba

解决方案


我能够找到可行的方法。
这并不完美但有效,但仍在寻找更好的方法来做到这一点。

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim i As Integer
    Dim ws As Worksheet
    Set ws = ActiveSheet

    If Not Intersect(Target, Range("A1")) Is Nothing Then
        ActiveWorkbook.SlicerCaches("Slicer_Test").Slicers(1).SlicerCache.ClearAllFilters
        For i = 1 To ActiveWorkbook.SlicerCaches("Slicer_Test").SlicerItems.Count
            If ActiveWorkbook.SlicerCaches("Slicer_Test").SlicerItems(i).Value <> ActiveSheet.Range("A1") Then
               ActiveWorkbook.SlicerCaches("Slicer_Test").SlicerItems(i).Selected = False
            End If
        Next
    End If

End Sub

推荐阅读