¿Es posible crear unos botones para que muestren unas hojas y oculten al mismo tiempo otras?

Estoy creando un programa en excel para optimización de facturas eléctricas, como hay varios tipos de facturas cada una lleva su proma en vb para la optimización ¿podría crear unos botones en el menu principal para los tipos de facturas de modo que solo muestre las hojas correspondientes y oculte las demás?

Respuesta
2

H o l a:

Usa 2 botones para oculta y mostrar

Sub ocultar()
Sheets("Hoja2").Visible = True 'oculta la hoja
Sheets("Hoja3").Visible = False ' Muestra la hoja
End Sub

Sub mostrar()
Sheets("Hoja2").Visible = False 'Muestra la hoja
Sheets("Hoja3").Visible = True 'oculta la hoja
End Sub

El problema es que de momento solo he programado la optimización de un tipo de factura, son 25 hojas, hay alguna función en la cual las hojas estén ocultas por defecto y solo se muestren al pulsar el botón correspondiente en la pag. ¿De menu?

Claro lo puedes hacer escriba el siguiente código en Workbook_Open(), se ejecutará al abrir el archivo.

Private Sub Workbook_Open()
Call ocultar
End Sub

Para que no lo hagas uno por uno pues usa esto

Sub Ocultar()
For Each Sheet In ActiveWorkbook.Sheets
    If Sheet.Name <> ActiveSheet.Name Then 
        Sheet.Visible = False
    End If
Next Sheet
End Sub

Sub MostrarTodas()
For Each Sheet In ActiveWorkbook.Sheets
    Sheet.Visible = True
Next Sheet
End Sub

y por ultimo haces la llamada de la macro al abrir el archivo

Private Sub Workbook_Open()
Call Ocultar
End Sub

¿Pero si hago eso se mostrarán todas a la vez no? Yo lo que quiero es que estén ocultas al abrir el archivo y solo se muestre la pag principal, y luego según el botón que pulse se muestren solo las hojas que le corresponderían, no se si me estoy exolicando muy bien...

Dime el nombre de la hoja principal

Menú de inicio

Ya tengo hecho lo que me explicaste para que las hojas estén ocultas al abrir el archivo, lo que no sé es como asignar a cada botón sus hojas correspondientes.

Muchísimas gracias por tu ayuda

Sub Ocultar()
Set h = Sheets("Menú de inicio")
For Each Sheet In ActiveWorkbook.Sheets
    If Sheet.Name <> h.Name Then
        Sheet.Visible = False
    End If
Next Sheet
End Sub
Sub MostrarTodas()
For Each Sheet In ActiveWorkbook.Sheets
    Sheet.Visible = True
Next Sheet
End Sub

Sub mostrarhoja2()
Sheets("Hoja2").Visible = True
End Sub
Sub mostrarhoja3()
Sheets("Hoja3").Visible = True
End Sub
'
'
'

 para que asignes a cada botón y muestre la hoja 

¡Gracias! hice lo que me dijiste y funciona de maravilla, muchas gracias!

Hola de nuevo, tengo un problema cuando he seguido con las hojas siguientes para otro tipo de tarifa, al crear una macro para llamar a esa hoja me da error, por qué puede ser?

Para la hoja "Fact.1(3.0A)" me va sin problemas, el resto son copias de estas con modificaciones, supongo que el error es por este motivo. Hay alguna forma de arreglarlo sin tener que hacer las hojas una por una?

H o la :

Es probable que el nombre de la hoja no este escrito correctamente, fíjate bien en el nombre y espacios del nombre de la hoja.

Para la segunda pregunta de generar copias de las hojas de dejo esto

http://www.expertosenexcelpc.com/2013/12/como-copiar-una-hoja-de-excel.html 

Hola de nuevo, en primer lugar muchas gracias por tu ayuda en las ocasiones anteriores, me has ayudado mucho.

Ya he terminado la aplicación en excel como te comenté, el problema ahora es que es demasiado lento, al abrir tarda mucho y en calcular. Y cuando le doy a guardar, a veces, pone excel no responde. Sabes de algo que pueda hacer para que no sea tan lento? Es posible que sea porque el libro tiene muchas hojas excel? 

 Un saludo.

Muchas gracias!

H o l a: Begoña 

Crea una nueva pregunta para no mezclar la pregunta anterior y resolvemos tus dudas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas