Ocultar hojas dependiendo contenido de una celda

Necesito un crear un macro que dependiendo del contenido de una celda me muestre una hoja y me oculte dos con nombres especificados.

Ejemplo.

  • Si el contenido de la celda BM 16 es “TODOS”, me muestre la hoja llamada “TODOS” y me ocultes las hojas “PECUARIO” y “AGRÍCOLA”
  • Si el contenido de la celda BM 16 es “PECUARIO”, me muestre la hoja llamada “PECUARIO” y me ocultes las hojas “TODOS” y “AGRÍCOLA”
  • Si el contenido de la celda BM 16 es “AGRÍCOLA”, me muestre la hoja llamada “AGRICOLA” y me ocultes las hojas “TODOS” y “PECUARIO”

E intentado arreglármelas con la siguiente macro pero me funciona a medias (solo funciona el primer case

Private Sub Worksheet_Change(ByVal Target As Range)

            Sheets("PECUARIO").Visible = False

            Sheets("AGRICOLA").Visible = False

            Sheets("TODOS").Visible = False

   Select Case Target.Address

Case "$BM$16"

         If UCase(Range("BM16")) = "PECUARIO" Then

            Sheets("PECUARIO").Visible = True

         Else

            Sheets("TODOS").Visible = False

            Sheets("AGRICOLA").Visible = False

         End If

    Case "$BM$16"

         If UCase(Range("BM16")) = "TODOS" Then

            Sheets("TODOS").Visible = True

         Else

            Sheets("PECUARIO").Visible = False

            Sheets("AGRICOLA").Visible = False

         End If

 Case "$BM$16"

         If UCase(Range("BM16")) = "AGRICOLA" Then

            Sheets("AGRICOLA").Visible = True

         Else

            Sheets("PECUARIO").Visible = False

            Sheets("TODOS").Visible = False

         End If

   End Select

End Sub

1 respuesta

Respuesta
2

·

Y la celda BM16 ¿en qué hoja está? ¿Está en otra hoja o está en alguna de las hojas o está en todas?

De momento voy a suponer que está en otra hoja, creo que será así como lo tienes.

Debes meter esta macro en la hoja de la celda BM16, tal como ya lo tenías:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("BM16")) Is Nothing Then Exit Sub
If UCase([BM16]) = "AGRICOLA" Then
    Sheets("PECUARIO").Visible = False
    Sheets("AGRICOLA").Visible = True
    Sheets("TODOS").Visible = False
ElseIf UCase([BM16]) = "PECUARIO" Then
    Sheets("PECUARIO").Visible = True
    Sheets("AGRICOLA").Visible = False
    Sheets("TODOS").Visible = False
ElseIf UCase([BM16]) = "TODOS" Then
    Sheets("PECUARIO").Visible = False
    Sheets("AGRICOLA").Visible = False
    Sheets("TODOS").Visible = True
Else
    MsgBox ("El valor introducido no está programado, todo se queda igual")
End If
End Sub

¡Gracias! 

Tiene razón, se me paso por alto indicar que la celda estaba en una cuarta hoja.

 Gracias el macro me funciono de maravilla

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas