I have this VBA code for Excel. The entire goal is to hide and unhide rows depending on some input values located in cells M7, H11, K11, and O11. The latter is reflected in the code below. The issue I have is that the rows that are being hidden in the first case target, are also located in the next three case targets. For example if I hide rows 20:23 when H11 is "yes", then I choose "2" in M7, those rows become unhidden (which makes sense given the range 10:57 of the case), and I want the results caused by H11 = "yes" to be "remembered", for a lack of a better word. I am not sure how to tackle this, and am not sure if its some "nested if" problem. Any help or redirection would be appreciated. See: Workbook Screenshot
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Activate
If Not Application.Intersect(Range("M7"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "1": Rows("10:33").EntireRow.Hidden = False
Rows("34:178").EntireRow.Hidden = True
Case Is = "2": Rows("10:57").EntireRow.Hidden = False
Rows("58:178").EntireRow.Hidden = True
Case Is = "3": Rows("10:81").EntireRow.Hidden = False
Rows("82:178").EntireRow.Hidden = True
Case Is = "4": Rows("10:105").EntireRow.Hidden = False
Rows("106:178").EntireRow.Hidden = True
Case Is = "5": Rows("10:129").EntireRow.Hidden = False
Rows("130:178").EntireRow.Hidden = True
Case Is = "6": Rows("10:153").EntireRow.Hidden = False
Rows("154:178").EntireRow.Hidden = True
Case Is = "7": Rows("10:177").EntireRow.Hidden = False
Rows("178:179").EntireRow.Hidden = True
Case Else
End Select
End If
If Not Application.Intersect(Range("H11"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "Yes": Rows("20:23").EntireRow.Hidden = False
Rows("24:24").EntireRow.Hidden = False
Case Is = "No": Rows("20:23").EntireRow.Hidden = True
Rows("24:24").EntireRow.Hidden = False
Case Else
End Select
End If
If Not Application.Intersect(Range("K11"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "Yes": Rows("24:27").EntireRow.Hidden = False
Rows("28:28").EntireRow.Hidden = False
Case Is = "No": Rows("24:27").EntireRow.Hidden = True
Rows("28:28").EntireRow.Hidden = False
Case Else
End Select
End If
If Not Application.Intersect(Range("O11"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "Yes": Rows("28:31").EntireRow.Hidden = False
Rows("32:32").EntireRow.Hidden = False
Case Is = "No": Rows("28:31").EntireRow.Hidden = True
Rows("32:32").EntireRow.Hidden = False
End Select
End If
End Sub