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

Respuesta
3

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!

Respuesta
2

¿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.

[email protected]

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

Pues ya recibí tu correo y sigo sin entender para qué quieres seleccionar la hoja.

Ya te dije que no puedes seleccionar la hoja si está oculta.

----

Vamos al siguiente punto,

Supongamos que ya seleccionaste la hoja ¿y ahora qué?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas