Como ocultar hoja en excel con macros
Tengo un archivo en excel donde tengo 10 hoja, todas las hojas excpto 1 las oculte
Pero en la hoja visible hice un menu con macros para que me de acceso a cada hoja
Pero al ocultarlas y ejecutar la macro por emedio de una autoforma,, me vota al código visual reportando error
¿Cómo hago para que se ejecuten las macros estando ocultas las hojas?, cada botón representa el vinculo a cada hoja..
Nota: la hoja donde esta el menu de la foto, esta protegido con pasww
2 respuestas
Es muy simple: ese mensaje de error 1004 es porque primero debes hacer la hoja visible y luego seleccionarla.
O sea que cada botón tendrá instrucciones como éstas, con su respectivo nombre de hoja:
Sub SANEAMIENTO() With Sheets("SANEAMIENTO") .Visible = True .Select End With End Sub
Y con respecto a este pedido: '.... Cada ves que se abra ese archivo, se abra automáticamente la hoja donde esta el Menu de opciones....' coloca en el evento Open del libro este código:
Private Sub Workbook_Open() Sheets("reporte_semanal").Select 'coloca el nombre de la hoja que corresponda End Sub
Y si necesitas volver a ocultar las hojas al salir de ellas, podrías colocar en cada una de ellas este código (utiliza el nombre de cada hoja). Hay otros modos de hacerlo pero éste es el más fácil de explicarlo. Ac laro que con 'xlveryHidden' la hoja NO se muestra desde el menú Inicio, Formato, Mostrar.
Private Sub Worksheet_Deactivate() Sheets("SANEAMIENTO").Visible = xlVeryHidden 'o False End Sub
Te invito a mirar los videos 45 al 47 de mi canal donde explico los principales Eventos de Hojas.
Sdos y no olvides valorar esta respuesta.
sr Elsa un placer saludarla
Lo que me envío es muy bien,, era lo que buscaba
Pero el problema es que solo oculta las hojas cuando se cierra el archivo
La idea de hacer el menu es para que el operador use los botones de autoformas del menu y NO las hojas o fichas,,, entonces cada ves que el ejecute un botón por ejemplo "sanemiento", este se hace visible,, si ejecuta AGUA, también se hace visible, y así sucecivamte,, y ya una ves todo visible, se olvidan del menu,, y trabajan por las hojas, ya que así estamos acostumbrados,, por eso coloque en cada hoja una macro tipo flecha para regresar al menu..
no se si me hice explicar.
Pero de todos modos gracias
EXCLENTE,, SR ELSA,, AHORA SI ME SALIO como espera
era q no me habia dado cuenta del codigo para ocultar,,,
Se lo anexe después del comentario anterior, pero
Excelente, gracias,
Igual dejo las aclaraciones por si otros usuarios tienen la misma inquietud.
Si no se coloca el código en el evento Deactivate de las hojas, se pueden ocultar todas juntas en cualquier momento con esta subrutina que se coloca en un módulo.
Sub ocultaHojas()
'se omite la hoja de portada
For Each Sh In Sheets
If Sh.Name <> "PORTADA" Then Sh.Visible = False 'o xlveryHidden
Next Sh
End Sub
Y se la llama también al abrir el libro:
Private Sub Workbook_Open()
Sheets("PORTADA").Select 'ajustar nombre
Call ocultaHojas
End Sub
Sdos!
DISCULPE,, PARA VOLVER ACTIVAR TODAS LAS HOJAS,, COMO SE HACE,,, RESULTA que este archivo necesito compartir en drive de google y allá las macros no funcionan, entonces me toca volver activar las hojas, pero no me aparecen,, como hago
Ayuda
La misma macro en un módulo pero con valores visible = True
Sub muestraHojas() For Each Sh In Sheets Sh.Visible = True Next Sh End Sub
Si te parece, podrías colocar las instrucciones (o llamarla con Call) desde el evento BeforeClose de tu libro, así tu trabajas con las hojas ocultas y cuando lo guardes, las harás visibles antes de compartirlo.
Private Sub Workbook_BeforeClose(Cancel As Boolean) For Each Sh In Sheets Sh.Visible = True Next Sh End Sub
Sdos!
- Compartir respuesta
¿Qué dice el error?
¿Cuál es el código?
---
¿Solamente quieres seleccionar la hoja?
Tienes que hacer la hoja visible para que la puedas seleccionar. Ejemplo:
Sub boton1() Sheets("Hoja2").Visible = True Sheets("Hoja2").Select End Sub
----
Si no quieres que la hoja se haga visible, entonces no selecciones la hoja. Lo que vayas a hacer en la hoja, solamente debes hacer referencia a la hoja, pero no la selecciones.
Ejemplo 1: Poner el dato "prueba" en la Hoja2 en la celda "B5"
Sheets("Hoja2"). Range("B5").Value = "prueba"
Ejemplo 2: Leer el dato de la Hoja2 de la celda "C7" y ponerlo en una variable:
Sub boton2() Dim x As Variant x = Sheets("Hoja2").Range("C7").Value End Sub
Se puede hacer todo o casi todo, no es necesario seleccionar la hoja. No importa si está visible u oculta. Si haces referencia a la hoja como en los ejemplos puedes mantener la hoja oculta.
GRACIAS SR DANTE,, pero no funciono los códigos que me envío
Lo que busco es que: al dar clic en cualquiera de los botones azules me lleve ala hoja correspondiente de la macro, pero deseo que NO se vean las hojas,, es decir, que estén ocultas
¿Cómo hago eso?
Solo deseo que sea visible la hoja del menu (reporte_semanal)
LE EXPLICO MÁS detallado
Cada botón azul es una macro que al hacer clic lleva ala hoja que corresponde, pero estas hojas están ocultas,, el problema es que si se da clic estando las hojas ocultas, reportar error en tiempo de ejecución..
Entonces como puedo hacer para que me lleve ala hoja pero sin que sea visible o se haga visible
La idea de estas macros es para no estar haciendop clic en hoja por hoja, sino que se ejecuten desde un menu de opciones como se muestra en la imagen
Lo que busco es que: al dar clic en cualquiera de los botones azules me lleve ala hoja
Como ya te comenté, no puedes ir a la hoja o seleccionar la hoja si está oculta. Por eso te envía el error.
----
La pregunta correcta para ti es, cuál es el objetivo de seleccionar la hoja, ¿para qué quieres seleccionar la hoja?
Es decir, ¿quieres ejecutar una macro en esa hoja?
---
De igual manera, como ya te expliqué, para ejecutar una macro en la hoja, no es necesario seleccionar la hoja.
-----
Entonces, si vas a ejecutar una macro para el botón "SANEAMIENTO BASICO". Pon aquí la macro, cómo se llama la hoja donde va a ejecutarse; y yo te ayudo para que funcione sin seleccionar la hoja y que la hoja permanezca oculta.
CÓDIGO:
Sub SANEAMIENTO()
SANEAMIENTO Macro
Sheets("SANEAMIENTO").Select
End Sub
Es decir, ¿quieres ejecutar una macro en esa hoja? R/ SI
La pregunta correcta para ti es, cuál es el objetivo de seleccionar la hoja, ¿para qué quieres seleccionar la hoja? R/ : PARA NO USAR LAS FICHAS U HOJAS MANUALEMENTE, sino que se ejecuten con un vinculo,, la hoja muestra una información,, cada una
Perdón se me olvidaba
Cada ves que se abra ese archivo, se abra automáticamente la hoja donde esta el Menu de opciones
Solo esta hoja es la que va a ser visible se llama : repórte_semanal
No me he explicado correctamente
Sub SANEAMIENTO() SANEAMIENTO Macro Sheets("SANEAMIENTO").Select End Sub
No puedes utilizar Select, porque la hoja está oculta, por eso te envía el error.
------
Sigues sin explicar cuál es el objetivo de seleccionar la hoja.
¿Para qué quieres seleccionar la hoja si está oculta?
No entiendo lo del vículo.
Trata de explicar para qué quieres seleccionar la hoja.
Y te repito no puedes seleccionar la hoja si está oculta...
No entiendo:
R/ : PARA NO USAR LAS FICHAS U HOJAS MANUALEMENTE, sino que se ejecuten con un vinculo,, la hoja muestra una información,, cada una
Cada ves que se abra ese archivo, se abra automáticamente la hoja donde esta el Menu de opciones
Solo esta hoja es la que va a ser visible se llama : repórte_semanal
Si solamente la hoja "reporte_semanal" está visible, cada vez que abras el libro se activará en la hoja "reporte semanal"
Si no sabes cómo explicar para qué quieres seleccionar la hoja, envíame tu archivo y lo reviso.
Escribe en el asunto tu nombre de usuario y el título de la pregunta.
Y este código sí funciona:
Sub boton1() Sheets("SANEAMIENTO").Visible = True Sheets("SANEAMIENTO").Select End Sub
Y este código sí funciona:
Sub SANEAMIENTO() Sheets("SANEAMIENTO").Visible = True Sheets("SANEAMIENTO").Select End Sub
OK
YO LE envíe el archivo
La verdad no se como hacerme entender,, oaja hubiera una opción para enviar un audio así como el telegram o wasp
Este código
Sub SANEAMIENTO() Sheets("SANEAMIENTO").Visible = True Sheets("SANEAMIENTO").Select End Sub
si funciona pero no es lo q busco,, ya q hace visible la hoja,, y no deseo q sean visibles.
Gracias
- Compartir respuesta