Macro para mostrar y ocultar hojas de excel

Tengo una hoja de excel que uso como indice en donde tengo imágenes que son hipervínculos que me dirigen a otras hojas del mismo libro. La pregunta es como puedo hacer que cuando abra el libro solo se vea el indice y al clickear en alguna imagen de hipervínculo solo me muestre la hoja correspondiente al mismo, y al volver al indice la oculte.
Soy nuevo en esto por favor que sea una respuesta detallada.
Respuesta
1
Te voy a dar un código para hacer lo que quieres, aunque seguro que hay otras mil formas de hacerlo.
En principio, los hipervínculos ya no sirven porque el VBA te hace el vínculo, por lo tanto, tienes que sustituir los hipervínculos por una macro.
Te voy a explicar un supuesto práctico para mostrar una hoja oculta y ocultar el índice y posteriormente, mostrar el indice y ocultar la hoja.
Crea un libro nuevo con dos hojas: Indice y Hoja2. Cada una de ellas tiene que tener una imagen, aunque la Hoja2 puede tener un botón. Ten en cuenta que al no tener hipervínculos, en cada hoja tienes que tener una imagen o botón que te envíe al índice.
Pulsas Alt+F11 para entrar en el editor de VBA y pulsas Insertar-->Módulo. Cuando se te abra la ventana del módulo, copias y pegas las siguientes macros:
Sub Macro2()
Sheets("Hoja2").Visible = True
Sheets("Hoja2").Select
Sheets("Indice").Visible = False
End Sub
Sub Macro3()
Sheets("Indice").Visible = True
Sheets("Indice").Select
Sheets("Hoja2").Visible = False
End Sub 
En la hoja Indice, haces click en la imagen con el botón derecho del ratón. En el menú contextual que te sale, eliges "Asignar macro" y te saldrá un cuadro de diálogo con las dos macros que acabas de copiar en el módulo de VBA, entonces le asignas la macro2.
En la Hoja2, en la cual, tendrás otra imagen a la que asignarás la macro3.
Una vez hecho esto, ocultas la "Hoja2" en Formato-->Hoja-->Ocultar y dejas la hoja "Indice" visible.
Ahora pruebas las macros y cuando pulsas la imagen en Indice, debe mostrar Hoja2 y ocultar Indice y si pulsas la imagen o botón en Hoja2, debe ocultar Hoja2 y mostrar Indice.
Si todo funciona, para ponerlo en práctica en tu libro, deberás hacer una macro por cada hoja, cambiando los nombre de las hojas en cada macro y además de tener una imagen en la hoja Indice por cada hoja del libro, en cada hoja del libro deberás tener una imagen o botón que te vincule con la hoja Indice. Cuando lo tengas todo hecho, ocultas todas las hojas del libro excepto Indice, grabas los cambios y pruebas su funcionamiento.
Espero no haberte liado mucho. Si tienes algún problema, me lo dices

2 respuestas más de otros expertos

Respuesta

Mi hermano pero explícame ya que trato de ponerles a las demás hojas cambiando los campos y no me trabaja y eso que sigo tu explicación al pelo pon me un ejemplo con tres hojas más

Respuesta

Hola kinger

Este código te puede ayudar: Debes de ocultar tus hojas excepto el menú o indice como tu le llamas.

A tu imagen seleccionala con click derecho y hay una opción que se llama asignar macro, y ahí deberás asignar el nombre de la macro correspondiente, previo a esto deberás colocar este código en un modulo de visual basic con solo teclear "Alt+F11", en la parte superior izquierda existe una opción que se llama modulo dale doble click y pega el código que te comparto, después de esto cierra la ventana con "Alt+F4".

En mi código, la hoja "Menú" corresponde a tu indice, y la "Hoja Principal" corresponde a el nombre de la hoja a donde quieres posicionarte al momento que le das click a tu imagen seleccionada.

Sub Ocultar_Hojas_Ir_a()
'
' Ocultar_Hojas Macro.
' Por JPC.
' Esta macro oculta el menu principal y te posiciona en otra hoja diferente al menu.
    Application.ScreenUpdating = False
    Sheets("Menu").Select
    Sheets("Hoja Principal").Visible = True
    Sheets("Menu").Select
    ActiveWindow.SelectedSheets.Visible = False
End Sub
Sub Ocultar_Hojas_Regresar_a()
'
' Ocultar_Hojas Macro.
' Por JPC.
' Esta macro oculta la hoja diferente al menu y te posiciona en el menu principal .
    Application.ScreenUpdating = False
    Sheets("Hoja Principal").Select
    Sheets("Menu").Visible = True
    Sheets("Hoja Principal").Select
    ActiveWindow.SelectedSheets.Visible = False
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas