Se você quiser que seu código seja executado em uma seleção de botão de opção, será necessário chamar a macro com o botão de opção ou precisar que a macro seja sub worksheet_change () para ser executada alterações na planilha.
O próprio código é executado corretamente. Existem maneiras melhores de fazer isso, mas não há nada errado com seu código.
Coloque isso no VBA para a planilha na qual você está trabalhando:
Private Sub worksheet_change(ByVal Target As Range)
'
' HideShow Macro
' Show only the selection pane assocated to the Design line selection
If Not Intersect(Target, Cells(1, 16)) Is Nothing Then
If Range("P1").Value = 1 Then
'Decoration Range A
Rows("10:19").Select
Selection.EntireRow.Hidden = False
Rows("20:59").Select
Selection.EntireRow.Hidden = True
ElseIf Range("P1").Value = 2 Then 'Decoration Range B
Rows("10:19").Select
Selection.EntireRow.Hidden = True
Rows("20:29").Select
Selection.EntireRow.Hidden = False
Rows("30:59").Select
Selection.EntireRow.Hidden = False
ElseIf Range("P1").Value = 3 Then 'Decoration Range C
Rows("10:29").Select
Selection.EntireRow.Hidden = True
Rows("30:39").Select
Selection.EntireRow.Hidden = False
Rows("40:59").Select
Selection.EntireRow.Hidden = False
ElseIf Range("P1").Value = 4 Then 'Decoration Range D
Rows("10:39").Select
Selection.EntireRow.Hidden = True
Rows("40:49").Select
Selection.EntireRow.Hidden = False
Rows("50:59").Select
Selection.EntireRow.Hidden = False
ElseIf Range("P1").Value = 5 Then 'Decoration Range E
Rows("10:49").Select
Selection.EntireRow.Hidden = True
Rows("50:59").Select
Selection.EntireRow.Hidden = False
End If
End If
End Sub
Mas eu faria assim:
Private Sub worksheet_change(ByVal Target As Range)
'
' HideShow Macro
' Show only the selection pane assocated to the Design line selection
If Not Intersect(Target, Range("p1")) Is Nothing Then
On Error Resume Next
ActiveSheet.Cells.EntireRow.Hidden = False
If Range("P1") = 1 Then 'Decoration Range A
Rows("20:59").Hidden = True
ElseIf Range("P1") = 2 Then 'Decoration Range B
Rows("10:19").Hidden = True
ElseIf Range("P1") = 3 Then 'Decoration Range C
Rows("10:29").Hidden = True
ElseIf Range("P1") = 4 Then 'Decoration Range D
Rows("10:39").Hidden = True
ElseIf Range("P1") = 5 Then 'Decoration Range E
Rows("10:49").Hidden = True
End If
End If
End Sub