自动切片器在另一个 sheet 中隐藏和显示行
Automate Slicer to Hide and Show Rows in another sheet
我有一个带切片器的枢轴 table,我想 link 它根据切片器选择隐藏或显示某些行。我现在使用的代码可以做到这一点,但是当没有切片器选择时,我希望所有这些隐藏的行再次可见,这就是我坚持的部分。目前,当切片器中没有选择任何内容时,所有行都被隐藏,这与我想要的相反。请帮忙!
Option Explicit
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim cell as Range
If Target.Name <> "PivotTable1" Then
Exit Sub
Else
For Each cell In Sheet2.Range("A2:A25")
If ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pen").Selected = True And cell.Value = "East" Then
cell.EntireRow.Hidden = True
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pencil").Selected = True And cell.Value = "Central" Then
cell.EntireRow.Hidden = True
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pen").Selected = True And cell.Value = "Central" Then
cell.EntireRow.Hidden = False
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pencil").Selected = True And cell.Value = "East" Then
cell.EntireRow.Hidden = False
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pen").Selected = False And ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pencil").Selected = False And cell.Value = "East" Then
cell.EntireRow.Hidden = False
End If
Next
End If
结束子
试试,
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim SLC As SlicerCache
Dim Wb As Workbook
Dim rngDB As Range, rng As Range
Dim rngU(1 To 2) As Range
If Target.Name <> "PivotTable1" Then Exit Sub
Set Wb = ThisWorkbook
Set SLC = Wb.SlicerCaches("Slicer_Item")
Set rngDB = Sheet2.Range("a2:a25")
For Each rng In rngDB
If rng = "Central" Then
If rngU(1) Is Nothing Then
Set rngU(1) = rng
Else
Set rngU(1) = Union(rngU(1), rng)
End If
ElseIf rng = "East" Then
If rngU(2) Is Nothing Then
Set rngU(2) = rng
Else
Set rngU(2) = Union(rngU(2), rng)
End If
End If
Next
If SLC.SlicerItems("Pen").Selected = True And SLC.SlicerItems("Pencil").Selected = True Then
rngU(1).EntireRow.Hidden = False
rngU(2).EntireRow.Hidden = False
ElseIf SLC.SlicerItems("Pen").Selected = True Then
rngU(1).EntireRow.Hidden = True
rngU(2).EntireRow.Hidden = False
ElseIf SLC.SlicerItems("Pencil").Selected = True Then
rngU(1).EntireRow.Hidden = False
rngU(2).EntireRow.Hidden = True
End If
End Sub
我有一个带切片器的枢轴 table,我想 link 它根据切片器选择隐藏或显示某些行。我现在使用的代码可以做到这一点,但是当没有切片器选择时,我希望所有这些隐藏的行再次可见,这就是我坚持的部分。目前,当切片器中没有选择任何内容时,所有行都被隐藏,这与我想要的相反。请帮忙!
Option Explicit
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim cell as Range
If Target.Name <> "PivotTable1" Then
Exit Sub
Else
For Each cell In Sheet2.Range("A2:A25")
If ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pen").Selected = True And cell.Value = "East" Then
cell.EntireRow.Hidden = True
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pencil").Selected = True And cell.Value = "Central" Then
cell.EntireRow.Hidden = True
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pen").Selected = True And cell.Value = "Central" Then
cell.EntireRow.Hidden = False
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pencil").Selected = True And cell.Value = "East" Then
cell.EntireRow.Hidden = False
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pen").Selected = False And ActiveWorkbook.SlicerCaches("Slicer_Item").SlicerItems("Pencil").Selected = False And cell.Value = "East" Then
cell.EntireRow.Hidden = False
End If
Next
End If
结束子
试试,
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim SLC As SlicerCache
Dim Wb As Workbook
Dim rngDB As Range, rng As Range
Dim rngU(1 To 2) As Range
If Target.Name <> "PivotTable1" Then Exit Sub
Set Wb = ThisWorkbook
Set SLC = Wb.SlicerCaches("Slicer_Item")
Set rngDB = Sheet2.Range("a2:a25")
For Each rng In rngDB
If rng = "Central" Then
If rngU(1) Is Nothing Then
Set rngU(1) = rng
Else
Set rngU(1) = Union(rngU(1), rng)
End If
ElseIf rng = "East" Then
If rngU(2) Is Nothing Then
Set rngU(2) = rng
Else
Set rngU(2) = Union(rngU(2), rng)
End If
End If
Next
If SLC.SlicerItems("Pen").Selected = True And SLC.SlicerItems("Pencil").Selected = True Then
rngU(1).EntireRow.Hidden = False
rngU(2).EntireRow.Hidden = False
ElseIf SLC.SlicerItems("Pen").Selected = True Then
rngU(1).EntireRow.Hidden = True
rngU(2).EntireRow.Hidden = False
ElseIf SLC.SlicerItems("Pencil").Selected = True Then
rngU(1).EntireRow.Hidden = False
rngU(2).EntireRow.Hidden = True
End If
End Sub