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.