VBA ocultar y mostrar filas según valor seleccionado

Tengo el siguiente código que funciona, según el cual en función del mes que se seleccione en la celda O3, muestra y oculta una serie de filas.

Intento conseguir que el rango de las filas a mostrar u ocultar, venga determinado por el valor diferentes celdas, pero no lo consigo. Es decir, no quiero tener que poner el rango 15:164 por ejemplo, sino tomar el valor 15 de una celda y 164 de otra celda.

Gracias de antemano

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect
Application.ScreenUpdating = False

If Target.Address(False, False) = "O3" Then
Select Case Target.Value
Case "Enero": Rows("15:164").Hidden = False: Rows("165:1602").Hidden = True
Case "Febrero": Rows("135:284").Hidden = False: Rows("285:1601").Hidden = True: Rows("15:134").Hidden = True
Case "Marzo": Rows("255:404").Hidden = False: Rows("405:1601").Hidden = True: Rows("15:254").Hidden = True
Case "Abril": Rows("405:554").Hidden = False: Rows("555:1601").Hidden = True: Rows("15:404").Hidden = True
Case "Mayo": Rows("525:674").Hidden = False: Rows("675:1601").Hidden = True: Rows("15:524").Hidden = True
Case "Junio": Rows("675:794").Hidden = False: Rows("795:1601").Hidden = True: Rows("15:674").Hidden = True
Case "Julio": Rows("795:944").Hidden = False: Rows("945:1601").Hidden = True: Rows("15:794").Hidden = True
Case "Agosto": Rows("915:1064").Hidden = False: Rows("1065:1601").Hidden = True: Rows("15:914").Hidden = True
Case "Septiembre": Rows("1065:1214").Hidden = False: Rows("1215:1601").Hidden = True: Rows("15:1064").Hidden = True
Case "Octubre": Rows("1185:1334").Hidden = False: Rows("1335:1601").Hidden = True: Rows("15:1184").Hidden = True
Case "Noviembre": Rows("1305:1454").Hidden = False: Rows("1455:1601").Hidden = True: Rows("15:1304").Hidden = True
Case "Diciembre": Rows("1455:1603").Hidden = False: Rows("15:1454").Hidden = True
End Select

End If

ActiveSheet.Protect

End Sub

1 respuesta

Respuesta
1

Responderé sólo para uno de los casos y lo puedes extrapolar al resto.

Songamos que queremos aplicarlo a la línea

Rows("15:164"). Hidden

Y supngamos que en C1=15 y D1=164, entonces una de las formas de hacerlo es ecribir tu código de la siguiente forma

 Rows(Range("C1").value & ":" & Range("D1").value).Hidden

Así el rango se formará por el contenido de C1 y D1.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas