Insertar un calendario permanente en hojas de calculo Excel con Controles ActiveX

sábado, julio 15, 2006

Ayer vimos como usar controles ActiveX en hojas de Excel. Para insertarlos debemos previamente activar la barra de herramientas del Cuadro de Controles. En la esquina inferior derecha de la barra del Cuadro de Controles, está el icono "más controles".

Al activarlo tendremos acceso a muchos más controles (no todos disponibles para las hojas de cálculos). Uno de ellos es el Calendar Control, que nos permite insertar un calendario permanente en la hoja de cálculos.



Para insertar el calendario en una hoja Excel, procedemos como con los otros controles ActiveX, como mostramos en la entrada anterior.

Una vez insertado en la hoja, abrimos el menú de propiedades, para adpatar el calendario a nuestras necesidades

En este calendario_spejemplo de calendario en Excel, tenemos una tabla con ventas diarias en la Hoja2. En la Hoja1 insertamos el calendario, y lo ligamos (LinkedCell) a la celda B7 (que no será visible al estar cubierta por el calendario).

En la celda B14 introducimos esta fórmula, que usa la celda ligada B7 como argumento

=FECHANUMERO(B7)

Esta formula convierte el valor textual del calendario a una fecha. En la celda C14 introducimos una función BUSCARV, para obtener el valor de las ventas correspondientes a la fecha elegida en el calendario

=SI(B14>MAX(Hoja2!A:A);"fecha sin datos";BUSCARV(B14;Hoja2!A:B;2;0))

la condición lógica con la función MAX, nos permite evitar valores erróneos cuando se elige una fecha que no exste en la tabla de ventas.

Ahora, podemos elegir la fecha en el calendario y ver la suma de ventas correspondientes en la celda C14.





Además del menú de propiedades en la barra de herramientas, también se puede cliquear con el boton izquierda el control y abrir este diálogo





Categorías: Varios_

Technorati Tags: ,

44 comments:

Anónimo,  16 mayo, 2007 01:16  

es posible poner la fecha en una celda sin tener que digitarla, si no que seleccionandola de un calendario, por ejemplo de un menu desplegable que aparesca un calendario en la celda se escoja la fecha y esta sea asignada a la celda.
Si me puede ayudar julianprada@gmail.com

Jorge L. Dunkelman 16 mayo, 2007 21:41  

Hola Julián

la forma más práctica de crear una lsita desplegable que se abra al activar una celda es usar Validacion de Datos.
Si quieres usar un calendario, me parece que la forma de hacerlo sería creando un evento que dispare el calendario cualdo se activa una celda de un rango determinado.

Julian 16 mayo, 2007 22:20  

Gracias Jorge por la respuesta, he usado una validacion para este fin, pero quisiraalgo mas grafico como el calendario que me permita visualizar el mes y los dias, y si seria de mucha utilidad que me ayudara con un ejemplo.

Gracias.

Jorge L. Dunkelman 18 mayo, 2007 15:29  

Hola Julián
he decidido escribir una nota sobre el tema. Espero publicarla en los próximos días.

Anónimo,  22 mayo, 2007 17:11  

Gracias Jorge estare pendiente.

Jorge L. Dunkelman 23 mayo, 2007 09:29  

Hola Julián
puedes ver el ejemplo en esta nota

Anónimo,  27 julio, 2007 00:09  

Hola buenas tardes, trate de hacer lo del calendario pero cuando abro los controles nome aparece el Calendar control, hay alguna manera de que aparezca?? o es mi version de excel??

Jorge L. Dunkelman 27 julio, 2007 08:11  

Tienes que tener el Calendar Control instalado, Lo puedes verificar en la lista de controles disponibles, como muestro en esta nota.
Si no aparece puedes descargarlo en esta página.

Atronao,  26 noviembre, 2007 15:54  

Buenas, he seguido tu blog una temporada, y he aprendido mucho, ahora necesito para unos documentos, poner la fecha completa todos los dias, (la fecha del dia que listo los trabajos) en una celda con este formato "Lunes, 26 de noviembre de 2007" como podría hacerlo, para que me cogiera la fecha del lunes automaticamente, o del martes.
Osea hoy pondria eso, pero si lo hago mañana que automaticamente me pusiera "Martes, 27 de Noviembre de 2007" creo que me has entendio.

Un saludo atrona00@gmail.com

Jorge L. Dunkelman 26 noviembre, 2007 18:43  

Hola Atronao

el formato de la fecha depende de la definición de formato que hayas elegido para la celda (Formato--Celda--Fecha).
No entiendo del todo que quieres decir con poner la fecha automáticamente. Si das el formato indicado, la fecha aparecerá en la celda con el nombre del día.
Si quieres que la fecha aparezca en una celda automáticamente al abrir el cuaderno, tendrías que usar macros.

uly 02 junio, 2008 00:01  

Saludos:

Me podrias ayudar con lo del LinkedCell) trato de ponerlo en las propiedades cuando lo escribo le doy enter el cuadro siempre se queda en blanco no lo guarda.

Jorge L. Dunkelman 05 junio, 2008 22:18  

Uly

puedes mandarme el archivo para ver dónde pueda estar el problema?

Luis M. 29 septiembre, 2008 12:20  

Hola Jorge,
He descubierto tu blog recientemente y es lo mas util que he encontrado nunca para trabajar con excel. Muchas gracias.

Te queria hacer una consulta sobre fechas. Quiero que en un parte de horas trabajadas, cuando el empleado introduzca las horas dedicadas a una tarea, por defecto, en la columna de fecha aparezca la fecha en la que introdujo la tarea, para ello uso la funcion HOY(). Mi problema es que quiero que esa fecha se quede almacenada con el valor introducido la primera vez, ya que la siguiente vez que abro el libro, la funcion HOY() actualiza de nuevo la fecha de la tarea al dia actual.

Jorge L. Dunkelman 29 septiembre, 2008 16:10  

Hola Luis
efectivamente, HOY() es volátil y por lo tanto es recalculada cada vez que sucede algún cambio en la hoja.
La solución es programar un evento que imprima en la celda requerida la fecha en que el valor ha sido introducido.

Anónimo,  04 febrero, 2009 22:01  

HOLA JORGE:
Estoy conociendo recien tu blog y me ha resultado de mucha utilidad.
Tengo un problema con un calendario de pagos, necesito que con referencia a el se incerte la fecha de pago en una hoja de calculo llamada comprobante de facturacion. Este calendario de pago esta marcado segun las fechas de entrega de documentos y fecha de pago con cheque, podria haber tratado con la formula condicional pero el problema es que las fechas de pago no siguen un orden correlativo

Jorge L. Dunkelman 05 febrero, 2009 07:11  

No es necesario que las fechas sigan un orden correlativo para usar una fórmula condicional.
Puedes enviarme el archivo por mail para que vea qué es lo que quieres hacer.

leo,  07 febrero, 2009 06:39  

hola, gracias por el post
Quisiera saber, como, usando el calendario ya mencionado, al dar click en un día, me aparezca en las celdas de abajo, una información de otra hoja ... es decir, en una hoja llevo un registro de evtnos diarios de mi trabajo, quisiera que el calendario, al dar click en cierto día, me mostrara la informacion relacionada con ese día la cual almaceno en otra hoja.

gracias!!!

Jorge L. Dunkelman 07 febrero, 2009 07:54  

Leo
habría que ver cómo están organizados los datos en la hoja, pero me parece que sería más práctico usar una tabla dinámica donde en el campo de página eligirías la fecha. En definitiva, todo lo que hace el calendario es poner la fecha elegida en una celda.

Anónimo,  24 septiembre, 2009 22:52  

Me gustaria hacer un calendario perpetuo incluyendo el numero de semanas del año, pero hacerlo con formulas ¿Como los hago?

Jorge L. Dunkelman 24 septiembre, 2009 23:26  

¿Has consultado en los foros de Excel? En esta nota del blog he mostrado como hacer un calendario permanente con fórmulas. Este puede ser tu punto de partida, sólo habría que agregar lase semanas (tal vez lo muestre en alguna futura nota)

Anónimo,  03 noviembre, 2009 17:31  

NECESITO QUE EXCEL ME AVICE DE FECHAS VENCIDAS O POR VENCER, MEDIANTE UN MENSAJE ESTO SERÍA SIMILAR A OUTLOOK, ESTAS FECHAS LAS TENGO PUESTAS EN LAS CELDAS. COMO PODRIA HACERLO

Jorge L. Dunkelman 03 noviembre, 2009 18:09  

Anónimo, ¿por que en mayúsculas? Es como si estuvieras gritando.
Tienes que programar un evento. Puedes hacer una búsqueda en el blog con la palabra "evento" y leer las distintas notas sobre el tema.

Anónimo,  12 septiembre, 2010 17:29  

Jorge,

¿Se podrían poner 2 calendarios en una misma hoja y controlar que la fecha del segundo sea siempre igual o posterior a la del primer calendario?
Sin macros o eventos supongo que no se podrá, pero con macros o eventos, cómo sería?
Un saludo,
Sergio

Jorge L. Dunkelman 13 septiembre, 2010 10:24  

Si, se puede y efectivamente, hay que usar macros. Por ejemplo, se podría programar un evento que abra un segundo calendario cuando se haya elegido una fecha en el primero. También se puede pasar la fecha elegida en el primero para determinar en que fecha se abrirá el segundo.
Pero la técnica y el código exceden el marco de un comentario.

Anónimo,  14 octubre, 2010 01:34  

Utilizando este calendario se podría hacer que debajo de él aparecieran varias filas con información respecto a un día?? es decir, por ejemplo, en lugar de las ventas totales, que al elegir una fecha pusiera por filas, cada una de las ventas que se realizaron ese día??

Jorge L. Dunkelman 14 octubre, 2010 18:53  

Si, se puede pero la solución no es trivial. Por ejemplo, se podría usar la fecha del calendario como argumento en una macro que filtre la tabla de ventas; o se podría hacer algo similar con una tabla dinámica + evento (macro).
También es posible diseñar una solución con fórmulas, pero sería complicada.

Anónimo,  15 noviembre, 2010 17:23  

Estimado Sr. Jorge Dunkelman:
He estado modificando un calendario perpetuo en excel, denominado yearly_event_calendar.xls, que bajé desde www.vertex42.com/calendars, que goza de gran flexibilidad, para adaptarlo a mis necesidades personales y respetando localismos nacionales.
Dicho calendario me ofrece formatos condicionales que yo no sabía como utilizar y con él lo aprendí.
Pero ahora me veo en la necesidad de preparar una función de excel que me permita elegir una serie de días de la semana comprendidos entre dos fechas, con exclusión de los demás; es decir, me refiero a una función que seleccione, por ejemplo, los terceros lunes de todos los meses comprendidos entre, por ejemplo, el 3 de marzo y el 18 de diciembre del año en curso, y que además, cuando el mes tenga, un quinto lunes, lo saltee y vaya al primero del mes siguiente, salvo que se le pida que los tome en consideración.
He estdo probando con algunas de las fórmulas que Ud. publicó, pero no tengo los conocimientos suficientes.
Viendo que Ud. amablemente desasna a quienes le plantean problemas de excel, le agradeceré su gentil ayuda, que, desde ya, doy por descontada.
Atte.
Eduardo Daniel Vázquez

Jorge L. Dunkelman 15 noviembre, 2010 18:03  

Eduardo,
las funciones no pueden elegir o modificar de ninguna manera los objetos de la hoja. Las funciones sólo pueden dar resultados (numéricos, textuales o booleanos).
Tampoco me queda claro sin la intención de "elegir" es que las fechas aparezcan en algún lugar de la hoja o sean resaltadas en el calendario. Esto último podría hacerse con formato condicional, cualquier otra opción requeriría el uso de macros.

Anónimo,  18 noviembre, 2010 07:43  

estimado Sr. Dunkelman:
Quizá no me expresé con suficiente claridad o precisión, por lo cual me tomo el atrevimiento de molestarlo nuevamente.
Mi necesidad concreta consiste en poder hacer automáticamente un listado de fechas en una columna a mi elección, que respete estas condiciones:
Dicho listado debería comprender determinados días de la semana, por ejemplo, los primeros y terceros lunes de todos los meses comprendidos entre dos fechas, como ser, el 3 de marzo y el 11 de diciembre, con posibilidad de excluir un período intermedio de fechas, tales como las que hay entre las vacaciones de invierno; asimismo, para el caso de que exista un mes con cinco lunes, que excluya este y pase al siguiente, salvo elección contraria. Los valores del díasem(), así como si se trata de primeros, segundos, terceros o cuartos, se definirían en sendas celdas, así como las fechas de inicio y fin del período, y las del plazo excluído.
Lamentando molestarlo con mi ignorancia, quedo de Ud. agradecido por cualquieer ayuda u orientación.
Eduardo Daniel Vázquez

Jorge L. Dunkelman 18 noviembre, 2010 17:07  

Dada la complejidad de la tarea y el hecho que lo que se quiere es crear una lista, no calcular un valor, la opción más razonable es programar una macro.

Alvaro 12 enero, 2011 17:32  

Hola, Excelente blog.
Tengo una consulta.
Tengo dos calendarios uno de Check-in y otro de Check-out.
Al escoger en el Calendar1 la fecha check-in se cierra dicho calendar y se abre el de Check-out.
Este calendar2 se abre con la fecha de hoy y lo que quiero es que comience a partir de la fecha Check-In.
Es posible realizar esto??

saludos
Alvaro

Jorge L. Dunkelman 13 enero, 2011 19:04  

Alvaro,
se puede hacer, pero tendrás que usar Vba (macros). El calendario es un objeto y la fecha que muestra es unapropiedad que puede ser establecida programáticamente. A pesar de no estar directamente relacionadoa con el tema, esta nota te puede dar una orientación.

Anónimo,  22 junio, 2011 21:58  

Muchas gracias

Anónimo,  28 diciembre, 2011 12:46  

Buenos días,

Gracias por tus aportaciones. Me gustaría preguntarte si habría algún método para poder pasar algunos datos de una tabla excel donde se ordenan las entregas de distintos proyectos por fechas, a un calendario (mensual por ejemplo), donde en las casillas correspondientes a los días de entrega aparezcan los nombres de los proyectos a entregar, de forma que de un solo golpe de vista se vean las citas que hay a lo largo del mes. Si fuese posible, ¿sería muy complicado?

Muchas gracias por anticipado y Felices Fiestas!

Jorge L. Dunkelman 31 diciembre, 2011 11:02  

Se puede hacer en Excel, pero no es una tarea sencilla. Pero, ¿por qué no usar Outlook que supongo que tienes instalado con el paquete de Office?
Si quieres hacerlo con Excel puedes echarle un vistazo a mi Planificador de Proyectos.

Anónimo,  02 enero, 2012 19:29  

Hola Jorge y antes de nada gracias por tu respuesta.
He estado mirando tu planificador, pero no es lo que necesito, de todas formas de nuevo gracias y un saludo.

Anónimo,  08 marzo, 2012 05:34  

NECESITO CREAR UNA LISTA EXEL DE CALENDARIO DIA A DIA DESDE 5000 ANTES DE CRISTO,,,, COMO LO LOGRO?????

Fran 04 abril, 2012 12:07  

Hola Jorge,
Estoy intentando aplicar tus conocimientos para crear un calendario en un formulario para ejecutarse con excel 2007. El problema lo tengo con que lo estoy desarrollando desde un Excel 2010 y debe ser compatible en ambos (o por lo menos en el 2007). No me puedo instalar el complemento MSCAL porque no tengo permisos de administración. Una solución sería hacerme un calendario en un listbox o similar o se te ocurre algún consejo mejor?
Muchas gracias de antemano y enhorabuena por tu blog!

Luis Campos Vicente 27 junio, 2012 22:42  

Buenas tardes,

En incluido el control de calendario en una hoja Excel usando este tutorial, pero me surge el siguiente problema. Creo el calendario, le doy formato y pongo el tamaño a mi gusto. Pero cuando cierro el libro y lo vuelvo a abrir, el calendario ha encogido de tamaño. He intentado de mil formas hacer que el calendario mantenga el tamaño con el que yo lo dejo, pero es imposible. Siempre que abro el libro de nuevo, sale más pequeño.

Por favor, ¿me puedes ayudar a entender qué pasa?

Muchas gracias.

Jorge L. Dunkelman 29 junio, 2012 18:39  

¿Qué versión de Excel estás usando? ¿Puedes enviarme el archivo?

Anónimo,  31 octubre, 2012 16:55  

Saludos, Sr. Dunkelman.
A ver si puede ayudarme con este problema. He creado un control ActiveX de imagen en una hoja de Excel 2007. Al clicarlo, y mediante programación VBA, hago que se cree un control de calendario y lo activo. Una vez elegida una fecha en él, ésta se recoge en una celda y el control de calendario se borra. El problema es que cada vez que se crea y activa el control de calendario al clicar sobre la imagen, se abre también la ventana "Propiedades de calendario". Hay que dar a Cancelar para poder operar con el calendario como se ha descrito arriba. He intentado definir esas propiedades en tiempo de ejecución pero no logro evitar esa ventana. ¿Alguna idea?
Muchas gracias por su atención.

Jorge L. Dunkelman 31 octubre, 2012 17:29  

Tendría que ver la hoja y el código. Puedes mandármela por mail privado (fijate en el enlace Ayuda, en la parte superior de la plantilla).

Publicar un comentario

Google+ Followers

Seguidores

Google+ Badge

Términos Legales

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP