jueves, 6 de junio de 2013

Crear una lista de hojas rapidamente

Me acaban de consultar como hacer para cambiar fácilmente de una hoja a otra, sin tener que estar desplazándose de un lugar a otro en la barra de etiquetas de hojas.
Luego de analizar el caso, e investigar por horas de horas, encontré dos soluciones; una muy fácil, que asumo que la gran mayoría de lectores optará; y una muy compleja, que asumo que solo los desarrolladores de macros la utilizarían en caso de necesitarla.

Para ello, antes de iniciar con la solución fácil, creen un Libro de Excel nuevo en blanco y coloquen 12 hojas, a cada hoja le pondrán el nombre de un mes: Enero, Febrero, Marzo, etc.


Una vez que ya tengo estas hojas creadas, la opción sencilla consiste en hacer CLIC DERECHO, en cualquier de los botones de desplazamiento de las hojas (son las fechas que se encuentran a al izquierda de la primera etiqueta de la hoja).


Realmente fácil verdad, super sencillo, mas fácil que romper el silencio diciendo algo. 
Por eso, les decía que esta opción es la que la gran mayoría de lectores utilizará.

Sin embargo, existe la otra opción, que es mas compleja, y para ello haremos las cosas paso a paso.

Paso 1: Presiona la tecla ALT + F11 para que aparezca la pantalla del Visual Basic. Dentro de la ventana del Proyecto (ubicado a la izquierda de la pantalla), haremos doble clic en el objeto ThisWorkBook.


Paso 2: En la pantalla en blanco que nos aparece copiamos el siguiente código:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Dim cCont As CommandBarButton
    On Error Resume Next
    Application.CommandBars("Cell").Controls("Indice de hojas").Delete
    On Error GoTo 0
    Set cCont = Application.CommandBars("Cell").Controls.Add _
                (Type:=msoControlButton, Temporary:=True)
    With cCont
        .Caption = "Indice de hojas"
        .OnAction = "IndexCode"
    End With

End Sub

Paso 3: Nos vamos al menú insertar, y luego seleccionamos la opción de Modulo


En el nuevo módulo, copiamos el siguiente código:

Sub IndexCode()
    Application.CommandBars("workbook Tabs").ShowPopup
End Sub

Paso 4: Finalmente cerramos el Visual Basic, y estando en el Excel, cuando haga clic derecho en cualquier celda.



Cuando haga clic en la opción "Indice de hojas", me aparecerá la lista de hojas de este archivo.
Espero que este truco, les haya servido...

Saludos
Ing. Enrique Neciosup Morales