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