Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 选择/取消选择切片器时隐藏/取消隐藏行_Excel_Vba - Fatal编程技术网

Excel 选择/取消选择切片器时隐藏/取消隐藏行

Excel 选择/取消选择切片器时隐藏/取消隐藏行,excel,vba,Excel,Vba,我正在仪表板中创建一个嵌套的切片器视图,其中两个切片器将在Excel中的两个不同行中相互重叠 我想在选择Slicer1中的任何选项时,取消隐藏Slicer2所在的行。当在切片器1中再次取消选择所有选项,将其重置为显示所有数据时,我想再次隐藏切片器2所在的行 我过去曾使用宏切换来隐藏/取消隐藏行,但我找不到解决此问题的方法 编辑日期:2020年2月17日 我遇到了另一个问题。我在几个不同的选项卡上使用此代码。一个选项卡工作正常-设置为在轴更新时从模块调用宏,轴位于切片器的另一个工作表上 另一个在同

我正在仪表板中创建一个嵌套的切片器视图,其中两个切片器将在Excel中的两个不同行中相互重叠

我想在选择Slicer1中的任何选项时,取消隐藏Slicer2所在的行。当在切片器1中再次取消选择所有选项,将其重置为显示所有数据时,我想再次隐藏切片器2所在的行

我过去曾使用宏切换来隐藏/取消隐藏行,但我找不到解决此问题的方法

编辑日期:2020年2月17日

我遇到了另一个问题。我在几个不同的选项卡上使用此代码。一个选项卡工作正常-设置为在轴更新时从模块调用宏,轴位于切片器的另一个工作表上

另一个在同一张正在更新的工作表上有轴心,而不是另一张(我不确定这是否重要)。我的设置与此相同-当pivot更新时,它调用宏。问题是切片器中有一个区域(最后一个区域)不工作。我有12个区域,当我选择其中任何一个区域(除了一个区域)时,我将取消隐藏目标行。当我清除过滤器时,它再次隐藏。但这一区域的行为就像我在清除它们一样。如果该行已隐藏,则不会发生任何事情,但如果该行已显示,则会将其隐藏。以下是当前代码:

Sub Hide_Unhide_facility2()

Application.ScreenUpdating = False

Dim cache As Excel.SlicerCache
Dim sht As Worksheet
Dim sItem As Excel.SlicerItem

Set cache = ActiveWorkbook.SlicerCaches("Slicer_Region2")

For Each sItem In cache.SlicerItems
Rows(10).Hidden = sItem.Selected

Next

Application.ScreenUpdating = True

End Sub

我可以用以下代码修复此问题:

Sub Worksheet_PivotTableUpdate _
    (ByVal Target As PivotTable)

Dim cache As Excel.SlicerCache
Set cache = ActiveWorkbook.SlicerCaches("Slicer_Region1")
Dim sItem As Excel.SlicerItem

For Each sItem In cache.SlicerItems
    If sItem.Selected = True Then
    Rows(69).Hidden = True
    End If

    If sItem.Selected = False Then
    Rows(69).Hidden = False
    End If

Next

End Sub

希望这能帮助其他人。

欢迎使用SO!请拿着这本书读一读。您应该尝试使用有用的HINR来改进代码。例如,
暗指
ActiveSheet
和If条件已过时。只需使用
行(69).Hidden=sItem.Selected
@computer即可。非常感谢您,我将代码更改为更简单的方法,效果很好。不过我还有一个问题,我正在编辑这个问题来解释。如果你对此有任何想法,我将非常感激。