试图根据某些单元格值在Excel中隐藏行

我正在四处寻找一个公式来隐藏特定单元格input的某些行。 在单元格C5我有一个下拉select“ Corporates ”和“ Projects ”。 在单元格C8我有一个下拉select“ High ”,“ Medium ”和“ Low ”。 在单元格H6我有公式=C5&C8 。 我有的macros如下:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(False, False) = "H6" Then Select Case Target.Value Case "CorporatesHigh": Rows("21:33").Hidden = True: Rows("12:20").Hidden = False Case "CorporatesMedium": Rows("21:33").Hidden = True: Rows("12:20").Hidden = False Case "CorporatesLow": Rows("25:33").Hidden = True: Rows("12:24").Hidden = False Case "ProjectsHigh": Rows("25:28").Hidden = False: Rows("29:33").Hidden = True: Rows("12:24").Hidden = True Case "ProjectsMedium": Rows("25:28").Hidden = False: Rows("29:33").Hidden = True: Rows("12:24").Hidden = True Case "ProjectsLow": Rows("25:33").Hidden = False: Rows("12:24").Hidden = True Case "": Rows("12:33").Hidden = False Case "Corporates": Rows("12:33").Hidden = False Case "Projects": Rows("12:33").Hidden = False Case "High": Rows("12:33").Hidden = False Case "Medium": Rows("12:33").Hidden = False Case "Low": Rows("12:33").Hidden = False End Select End If End Sub 

当我点击进入H6时,这个macros可以工作,但是当单元格C5或者C8改变时,我需要它工作。

If-Not-Intersect-Is Nothing模式是检查改变的单元是否在给定的单元格范围内的首选方法。

要处理所有三个单元格,可以使用以下内容。 如果需要,您可以轻松添加或删除单元格到Range

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("H6,C5,C8")) Is Nothing Then Select Case Range("H6").Value Case "CorporatesHigh": Rows("21:33").Hidden = True: Rows("12:20").Hidden = False Case "CorporatesMedium": Rows("21:33").Hidden = True: Rows("12:20").Hidden = False Case "CorporatesLow": Rows("25:33").Hidden = True: Rows("12:24").Hidden = False Case "ProjectsHigh": Rows("25:28").Hidden = False: Rows("29:33").Hidden = True: Rows("12:24").Hidden = True Case "ProjectsMedium": Rows("25:28").Hidden = False: Rows("29:33").Hidden = True: Rows("12:24").Hidden = True Case "ProjectsLow": Rows("25:33").Hidden = False: Rows("12:24").Hidden = True Case "": Rows("12:33").Hidden = False Case "Corporates": Rows("12:33").Hidden = False Case "Projects": Rows("12:33").Hidden = False Case "High": Rows("12:33").Hidden = False Case "Medium": Rows("12:33").Hidden = False Case "Low": Rows("12:33").Hidden = False End Select End If End Sub