Jul 28 2021 10:14 PM
Hi everyone, could someone help me out on refactoring my code please in an efficient way. I am new to VBA scripting. It is basically a drop-down list, that hides/shows rows when a list is selected. Thanks in advance.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 16 And Target.Row = 3 Then
If Target.Value = "Option 1" Then
Worksheets("Annual").Range("66:66,75:75,134:134,171:178,244:244,246:246,256:259,263:263").EntireRow.Hidden = True
Worksheets("Annual").Range("65:65,168:170,197:197,216:235,239:242,247:247,264:264,275:275").EntireRow.Hidden = False
ElseIf Target.Value = "Option 2" Then
Worksheets("Annual").Range("66:66,75:75,134:134,171:178,244:244,246:246,256:259,263:263").EntireRow.Hidden = False
Worksheets("Annual").Range("65:65,168:170,197:197,216:235,239:242,247:247,264:264,275:275").EntireRow.Hidden = True
ElseIf Target.Value = "All" Then
Worksheets("Annual").Range("66:66,75:75,134:134,171:178,244:244,246:246,256:259,263:263,65:65,168:170,197:197,216:235,239:242,247:247,264:264,275:275").EntireRow.Hidden = True
End If
End If
End Sub
Jul 29 2021 12:10 AM
SolutionNo need to refactor this code. You might use Select Case:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 16 And Target.Row = 3 Then
Select Case Target.Value
Case "Option 1"
Worksheets("Annual").Range("66:66,75:75,134:134,171:178,244:244,246:246,256:259,263:263").EntireRow.Hidden = True
Worksheets("Annual").Range("65:65,168:170,197:197,216:235,239:242,247:247,264:264,275:275").EntireRow.Hidden = False
Case "Option 2"
Worksheets("Annual").Range("66:66,75:75,134:134,171:178,244:244,246:246,256:259,263:263").EntireRow.Hidden = False
Worksheets("Annual").Range("65:65,168:170,197:197,216:235,239:242,247:247,264:264,275:275").EntireRow.Hidden = True
Case "All"
Worksheets("Annual").Range("66:66,75:75,134:134,171:178,244:244,246:246,256:259,263:263,65:65,168:170,197:197,216:235,239:242,247:247,264:264,275:275").EntireRow.Hidden = True
End Select
End If
End Sub
Jul 29 2021 12:10 AM
SolutionNo need to refactor this code. You might use Select Case:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 16 And Target.Row = 3 Then
Select Case Target.Value
Case "Option 1"
Worksheets("Annual").Range("66:66,75:75,134:134,171:178,244:244,246:246,256:259,263:263").EntireRow.Hidden = True
Worksheets("Annual").Range("65:65,168:170,197:197,216:235,239:242,247:247,264:264,275:275").EntireRow.Hidden = False
Case "Option 2"
Worksheets("Annual").Range("66:66,75:75,134:134,171:178,244:244,246:246,256:259,263:263").EntireRow.Hidden = False
Worksheets("Annual").Range("65:65,168:170,197:197,216:235,239:242,247:247,264:264,275:275").EntireRow.Hidden = True
Case "All"
Worksheets("Annual").Range("66:66,75:75,134:134,171:178,244:244,246:246,256:259,263:263,65:65,168:170,197:197,216:235,239:242,247:247,264:264,275:275").EntireRow.Hidden = True
End Select
End If
End Sub