Ocultar Hojas

Buenas tardes Elsa Matilde:
Abusando, de nuevo, de tu amabilidad, te agradecería una ayuda con el siguiente problema. Tengo un libro con varias hojas, me interesaría una macro que permitiría ocultar las hojas a partir de una fecha determinada, ¿por ejemplo?hoja1 el 10-03-¿04?,?hoja2 10-04-¿04?,?hoja3 10-05-¿04?.
Esta macro tendría que evitar que se pudieran activar a través de formato => Hojas => Mostrar

1 Respuesta

Respuesta
1
Te envío este mensaje solo para quitar la consulta del tablón. Este fin de semana te la preparo.
Saludos
Elsa
(No la finalices todavía sino no tendré como enviártela.)
Hola Elsa;
Tengo pendiente de recibir tu respuesta, supongo que vas muy liada de trabajo.
Es cierto que estoy liada de consultas, pero .. ¿Cuál sería el sinónimo en el medio virtual, de "traspapelar"? Eso fue lo que pasó con tu consulta, ya que tengo otra tuya ya finalizada con el tema Ocultar hojas y de ahí el enredo.
Bien, ¿el tema que no aclaras es dónde tendrás las fechas?
Se me ocurrió tener una pequeña tabla en un lugar cualquiera (tomé para el ejemplo Y2:Z5 de la Hoja1) con los nombres de las hojas y sus fechas. Si al abrir el libro la fecha actual es mayor a la fecha asignada a la hoja, se ocultará. Utilicé >= pero podes optar por > solamente.
La primer rutina entonces irá en el evento de apertura del libro. Seleccioná ThisWorkbook en el margen izquierdo y copia esto:
Private Sub Workbook_Open()
ocultaporfechas
End Sub
La siguiente irá en un módulo (Insertar Módulo):
Sub ocultaporfechas()
Dim mihoja As String
Dim mifecha As Date
mifecha = Format(Now(), "dd/mm/yy")
Sheets("Hoja1").Range("Y2").Select
'recorre la lista hasta encontrar una celda vacía.
While ActiveCell <> ""
'compara con la fecha actual
If mifecha >= ActiveCell.Offset(0, 1).Value Then
'si la fecha actual supera a la de la lista oculta la hoja de manera tal que no se podrá ver por el menú Formato, Mostrar.
Sheets(ActiveCell.Value).Visible = xlVeryHidden
End If
'pasa a la fila siguiente
ActiveCell.Offset(1, 0).Select
'repite el proceso
Wend
End Sub
La manera de volver a mostrar estas hojas es con otra rutina que podrás tener en un módulo:
Sub muestrahojas()
Dim mihoja
For Each mihoja In Sheets
If mihoja.Name <> "Hoja1" And mihoja.Visible = xlVeryHidden Then
mihoja.Visible = True
End If
Next mihoja
End Sub
Te recuerdo que siempre debe quedar una hoja visible, en mi ejemplo la Hoja1.
Y si esto no se debe ver, tendrás que proteger también las rutinas para que no se acceda a ellas. (esto merece consulta aparte..:)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas