Como mostrar una hoja excel según la fecha

Tengo un libro en Excel 2007 compuesto de varias hojas y necesito que algunas solo sean visibles según la fecha.

He probado con el evento Worksheet_change pero no consigo que funcione.

Agradecería algún consejo.

Gracias

1 Respuesta

Respuesta
1

Sigue mi ejemplo: Tengo un libro con tres hojas (hoja1, hoja2 y hoja3). En este instante tengo ocultas las hojas: hoja2 y hoja3 y la hoja1 está visible como hoja principal. Mediante esta macro, evalúa el día en el que estamos y si es día 15 dejará visible la hoja2 y si es día 30 dejará visible la hoja3

Sub hojas()
dia = Day(Date)
Select Case dia
Case Is = 15
Sheets("hoja2").Visible = True
Case Is = 30
Sheets("hoja3").Visible = True
End Select
End Sub

Muchas gracias por tu pronta respuesta.

Voy a probarlo de inmediato, no obstante creo que van a surgir algunos inconvenientes cuando el mes tenga 28,29 o 31 días.

Voy a exponer mejor mi problema:

Las hojas deben mostrarse unas el dia 15 y otras el último día de mes.

Cada día ese libro (el cual contiene las hojas a las que me refiero) se abre diariamente para rellenarlo con datos.

Hay una celda en la que se introduce la fecha mediante una macro a través de un userform con un calendario.

De esa celda con la fecha ya introducida yo extraigo en otra celda el número de días que tiene el mes ,en otra el numero de día del mes y en otra el número de mes del año.

Con esta información que solo está disponible después de poner la fecha en la celda de fecha creo que debería poder hacer algo así:

Si dia del mes es 28 y número mes 2, mostrar hoja x.

Si dia del mes es 29 y número mes 2, mostrar hoja x.

Si número de días del mes es 31 y día del mes 31, mostrar hoja x

Si número de días del mes es 30 y dia del mes 30, mostrar hoja x.

El caso es que he probado algunas cosas pero no funcionan, no da error ni nada, pero no muestra la hoja.

A ver que opinas.

Muchas gracias

Entonces sería algo así, siguiendo tu ejemplo:

(Partimos desde un momento en el que solo está visible la hoja1 en cuya celda A1 está la fecha)

Sub verhojas()
fecha = Sheets(1).Range("a1").Value
dia = Day(fecha)
mes = Month(fecha)
If dia = 15 Then Sheets("hoja2").Visible = True
If dia = 28 And mes = 2 Then Sheets("hoja3").Visible = True
If dia = 29 And mes = 2 Then Sheets("hoja3").Visible = True
'.........
'..............
'................
End Sub

Muchas gracias.

Disculpa por mi falta de conocimientos, pero...

Entiendo que tengo que declarar ese procedimiento en la sección general de la hoja que alberga la fecha,no?

Y luego invocarlo desde el formulario del calendario que pone la fecha en la celda...

Por lo que creo entender,en la celda que contiene la fecha...pongo la fecha simplemente?

Sin discriminar,dia del mes,mes o número del mes?

Si es así, ojo lo que me he complicado yo la vida.....

Reitero mis disculpas por dar tanta guerra.

Un saludo

Así es, yo te he hecho un extracto del procedimiento. Lo que está claro es que mediante el formulario aceptarás una fecha que pondrás en la celda A1 de la hoja1 (en mi ejemplo), después viene el análisis de esa fecha como muestro en mi macro.

He declarado el procedimiento en el formulario del calendario que es el que envía la fecha a la hoja y he invocado el procedimiento antes de cerrar el citado formulario, ya que en ese momento la celda de la hoja ya tiene fecha para poder funcionar.

Creo,creo que lo he hecho bien, he cambiado las referencias acordes con mis hojas y celdas...

Pero me da un error en la primera línea :

Se ha producido el error '13' en tiempo de ejecución:
No coinciden los tipos.

He estado mirando y eso parece indicar que el formato de la celda no es adecuado, pero tiene formato de fecha larga.

No es el adecuado?

Gracias por tu atención

Yo lo he probado con fecha larga y funciona perfectamente. Entiendo como fecha larga lo siguiente:

Miércoles, 28 de marzo de 2012

Pues evidentemente algo no hago bien.

Para descartar errores en mi hoja, he cogido una hoja en blanco y con la celda A1 con formato fecha larga he hecho una macro con el código que me indicas y al ejecutarla me da el mismo error '13'.

Seguro que soy yo el que se equivoca, pero no sé donde, lo siento...

Dime tu mail y te mando el ejemplo para que lo veas funcionando y lo puedas editar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas