如何根据多个单元格的值自动在Excel中隐藏和取消隐藏行

时间:2018-09-22 11:58:54

标签: excel-vba

enter image description here我是excel宏的新手。 我正在尝试创建一个宏,以基于多个单元格值自动隐藏和取消隐藏excel中的行。 我已经使用数据验证创建了两个带有值的下拉单元格,并且基于该下拉列表,我试图隐藏和取消隐藏。 如果第一个下拉列表为“ I类”,第二个下拉列表值为Ä 从8到20的行应该是可见的,从21到行的末尾的行应该被隐藏,并且当第一个下拉列表为“ I类”,第二个下拉值为“ B”时,从8到最后一行的行应该被隐藏隐藏,除了23到31的行。如果需要,我可以提供包含虚拟数据的excel文件

1 个答案:

答案 0 :(得分:1)

将此代码放在通过右键单击工作表名称选项卡“查看代码”访问的工作表的私有代码表中。修改行范围以适合。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("D3, D4")) Is Nothing Then
        On Error GoTo meh
        Application.ScreenUpdating = False
        Range("8:" & Me.UsedRange.Rows.Count).EntireRow.Hidden = True
        Select Case Range("D3").Value2
            Case "Class I"
                Select Case Range("D4").Value2
                    Case ChrW(196)  'Ä
                        Intersect(Range("8:20"), Me.UsedRange).EntireRow.Hidden = False
                    Case "B"
                        Intersect(Range("21:33"), Me.UsedRange).EntireRow.Hidden = False
                    Case Else
                        'do nothing
                End Select
            Case "Class II"
                'copy above for Class I here
                'modify rows to show/hide
            Case Else
                'do nothing
        End Select
    End If

meh:
    Application.ScreenUpdating = True

End Sub