Crear un listado de todas las hojas de mi documento Excel.

Tengo un documento Excel con demasiadas hojas y se me hace difícil encontrarlas cuando las necesito. En el transcurso del tiempo iré creando más hojas y se hará más difícil la tarea de encontrarlas.

Existe alguna forma (list box) que me permita visualizar todas las hojas y cuando seleccione una de la lista se dirija a la hoja seleccionada. Esta lista tendría que estar en todas las hojas y actualizarse cada vez que cree una nueva hoja.

La idea principal es poder navegar entre todas las hojas lo más fácil posible.

1 Respuesta

Respuesta
1

Lo más fácil posible es así, estando en cualquier hoja de puedes pasar a la que quieras solo seleccionándola

Como insertas ese complemento. Y mediante un código se podría hacer.

Este es el código del complemento lo pegas en un modulo estándar y en en el modulo thisworkbook pegas los códigos que están más abajo de este, el nombre juegos puede cambiar a tu gusto no afecta en nada si lo haces.

rem macro menu
Sub defmenus()
Set BARRA = CommandBars
Dim boton As CommandBarButton
zapMENU
Set BARRA = CommandBars.Add(Name:="juegos", Position:=msoBarBottom, MenuBar:=True)
With BARRA.Controls.Add(Type:=msoControlDropdown)
For Each NHOJA In Worksheets
    nombre = NHOJA.Name
    .AddItem nombre
Next NHOJA
.OnAction = "ir_a_hoja"
.TooltipText = "Seleccionar hoja"
End With
BARRA.Visible = True
With BARRA
    .Protection = msoBarNoMove + msobarcustomize
    .Visible = True
End With
End Sub
rem macro ir a hoja
Sub ir_a_hoja()
With CommandBars.ActionControl
nombre = .List(.ListIndex)
On Error Resume Next
Sheets(nombre).Select
If Err.Number > 0 Then defmenus
On Error GoTo 0
End With
End Sub
rem macro borrar menu 
Sub zapMENU()
On Error Resume Next
CommandBars("juegos").Delete
On Error GoTo 0
End Sub

estos van en el modulo thisworkbooks

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Rem borra el complemento al cerrar el libro
zapMENU
End Sub
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Rem actualiza el menu cada que creas una nueva hoja
defmenus
End Sub
Private Sub Workbook_Open()
Rem carga el menu al abrir el libro
defmenus
End Sub

Me funciona bien, pero también me muestra la hojas ocultas y la idea es que no se vean.

Saludos.

Eso no lo mencionaste en tu petición inicial solo entra a la macro defmenus y en el for each agrega el if que ves en el código de abajo y listo solo cargara los hojas que estén visibles

For Each nhoja In Worksheets
    nombre = nhoja.Name
    If nhoja.Visible = True Then .AddItem nombre
Next nhoja

Recuerda no olvidar valorara mi respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas