lunes, 24 de agosto de 2020

Macro Excel Para ver el Nombre de hojas y Activarlas

Como continuación de la última entrada vamos a realizar una macro para ver el nombre de todas las hojas del libro que tenemos activos y posteriormente activar la hoja que queramos ver.
En principio el archivo posee cinco hojas, que las llamaremos Inicio, Enero, Febrero, Marzo y Abril.

Siempre cuando iniciemos el archivo solamente veremos una hoja, que será la hoja de Inicio.




Vamos a configurar el archivo. Como se observa en la imagen en todas las hojas hemos puesto una especie de título para identificar en que hoja estamos.

Lo primero que haremos será hacer no visible cada hoja y ésto lo haremos, pinchando en la pestaña de Programador, y posteriormente en Visualbasic.

Posteriormente haremos doble click en cada hoja y mostraremos las propiedades de la hoja, nos iremos a la parte de abajo de las propiedades donde pone Visible y entre las opciones que nos pone elegiremos XLSHEETVERYHIDDEN, como muestra en la imagen.


Esto lo haremos en todas las hojas de los meses, por supuesto no lo haremos en la hoja de Inicio que será la única que veremos cuando abramos el archivo.

A continuación haremos doble click en ThisWorkbook y dentro de los eventos elegiremos Open, esto lo hacemos para que cuando se abra dicho archivo solamente podamos ver la hoja de Inicio, y escribiremos el siguiente código:

Private Sub Workbook_Open()

ENERO.Visible = xlSheetVeryHidden
Febrero.Visible = xlSheetVeryHidden
Marzo.Visible = xlSheetVeryHidden
Abril.Visible = xlSheetVeryHidden

End Sub






Seguidamente insertaremos un modulo, en el que insertaremos un procedimiento, en mi caso lo llamaré Trabajo_Hojas, que insertaremos el siguiente código:

Sub Trabajo_Hojas()

'este programa nos pedirá en que hoja quiero trabajar
On Error GoTo etiqueta
Dim n_hoja As String
Dim MiHoja As Worksheet
Dim respuesta As Integer
Dim respuesta1 As Integer

respuesta = MsgBox("Deseas Ver el nombre de las hojas", vbYesNo)
    
    If respuesta = vbYes Then
       For Each MiHoja In Worksheets
            MsgBox MiHoja.Name
        Next MiHoja
        respuesta1 = MsgBox("Ya has visto todos los nombre de las hojas" & vbCrLf & "Sabes el nombre de la hoja que quieres ver?", vbYesNo)
        
        
etiq:
        If respuesta1 = vbNo Then
            For Each MiHoja In Worksheets
            MsgBox MiHoja.Name
            Next MiHoja
            respuesta1 = MsgBox("Ahora, ya has visto todos los nombre de las hojas " & vbCrLf & "¿Sabes el Nombre de la Hoja que quieres ver?", vbYesNo)
            GoTo etiq

        ElseIf respuesta1 = vbYes Then
            n_hoja = InputBox("¿En que Hoja quieres trabajar actualmente?")
            Worksheets(n_hoja).Visible = True
            Worksheets(n_hoja).Select
            Range("a1").Select
        
           
        End If
           
    Else
       n_hoja = InputBox("¿En que Hoja quieres trabajar?")
       
       Worksheets(n_hoja).Visible = True
       Worksheets(n_hoja).Select
       Range("a1").Select
    
    End If

    
Exit Sub
   
etiqueta:

    MsgBox "No has introducido el nombre de ninguna hoja válida"
    Hoja5.Select
    Trabajo_Hojas
    'Exit Sub
      
End Sub





Vamos a explicar un poco la macro:

Por supuesto hemos introducido un botón en la hoja de Inicio para lanzar la macro, al pulsar la macro lo primero que nos hace es la respuesta, que es ¿Deseas ver el nombre de las hojas?

La respuesta puede ser que Si, por lo que nos mostrará todos los nombres de las hojas, y nos hará la respuesta 1 donde nos volverá a preguntar  "Ya has visto todos los nombre de las hojas", "Sabes el nombre de la hoja que quieres ver?", y nos volverá a dar otra dos opciones.

En esta segunda pregunta si contestamos que Si nos preguntará "¿En que Hoja quieres trabajar actualmente?" , e introduciremos el nombre de la hoja. Y en caso Negativo nos volverá a repetir los nombres de las hojas.

en caso negativo de la primera pregunta se irá hacernos la pregunta ¿En que hojas quieres trabajar? y nos hará visible la hoja introduzcamos, en caso de no existir el nombre de la hoja nos saltará a etiqueta ya que existe un error y nos dira "No has introducido el nombre de ninguna hoja válida"

Y por supuesto en todos los casos que introduzcamos un nombre de una hoja que no exista, nos irá a la etiqueta por existir un error.






No hay comentarios:

Publicar un comentario

Gracias por participar en esta página.