miércoles, 7 de abril de 2010

Control de Calendario 11.0 en Excel.

Veremos una forma sencilla de disponer de un Calendario perpetuo (desde 1900 a 2100), introduciendo un Control ActiveX en nuestra hoja de cálculo.
Pedía ayuda un lector a este respecto:
...quisiera saber como hacer para que al momento de querer introducir una fecha en una celda de excel,me aprezca un pequeño calendario en el cual pueda señalar el día, el mes y el año, es decir algo parecido al que aparece en las propiedades de fecha y hora de la computadora....

Funciona exactamente igual para Excel 2003 o Excel 2007, tan sólo deberemos insertar desde los Cuadros de control.
Buscaremos en Excel 2003 la barra de herramientas Cuadro de controles o en Excel 2007 desde el menú Programador > Controles > Insertar > Controles ActiveX
desde donde seleccionaremos en ambos casos el mostrar Más controles:
Para Excel 2003

Control de Calendario en Excel.


y para Excel 2007

Control de Calendario en Excel.


Buscaremos ahora un Control llamado Control de calendario 11.0

Control de Calendario en Excel.


Ya sólo nos queda entonces desplegar este Cuadro de control sobre nuestra hoja de cálculo, adecuándolo al tamaño deseado, podremos ver algo así:

Control de Calendario en Excel.


Sin embargo, sin lo que explicaré a continuación, es sólo un objeto; lo más importante es relacionarlo con nuestras celdas; lo que haremos desde sus propiedades, a las que accederemos bien presionando el botón derecho del ratón sobre el 'Calendario' o bien desde el menú Programador > cuadro de Controles > Propiedades

Control de Calendario en Excel.
haz click en la imagen


Existen multitud de propiedades para configurar este Calendario, pero sin duda la más importante es la propiedad LinkedCell, con la que indicaremos dónde deseamos que nos muestre la fecha que seleccionemos sobre el control de calendario, en mi caso le he marcado la celda B13.
Por último para activar el control y poder trabajar sobre el no deberemos olvidar cerrar la Ventana de propiedades, y deshabilitar el 'Modo Diseño'; sólo de este modo tendremos plenamente operativo nuestro Calendario.

Por supuesto esta fecha la podremos utilizar para cualquier proposito, pero esto será otra cuestión...

24 comentarios:

  1. Muchísimas gracias

    ResponderEliminar
  2. Muy buena la descripción, gracias

    ResponderEliminar
  3. En Excel 2010, aunque en la ayuda habla de: ..."como el Control de calendario 12.0"... en el apartado de Insertar Controles Activex, en el cuadro de dialogo de MÁS CONTROLES no aparece. Tampoco ningún control que menciones la palabra calendar. ¿Ha desaparecido esta opción en la versión de 2010?...
    Muchas gracias

    ResponderEliminar
  4. Efectivamente no aparece en la versión 2010 este control, sin embargo existen un par de librerías que deberías instalar: MSCOMCT2.OCX y MSCAL.OCX.
    se localizan en:
    C:\Windows\System32\Mscomct2.ocx
    y se agrega a la lista de referencias en el proyecto de vba como:
    Microsoft Windows Common controls-2 6.0 (SP6)

    Puedes ver en un enlace de ayuda de Microsoft qué pasos seguir y con qué problemas te llegarías a encontrar...
    control calendario.

    Espero te sea de utilidad, la verdad, es que este asunto es bastante lioso y existe poca documentación 'oficial' al respecto.
    Por mi parte sigo empleando Excel 2007, y sólo para momentos o consultas muy puntuales 2010.
    Slds

    ResponderEliminar
  5. Quedo muy agradecido por tú rápida respuesta.
    Lo veré y si tengo algún problema, volvería a contactar en el Foro.
    Conocí este foro a través de: http://trucosexcel.blogspot.com/ y me han producido, los dos blogs, una muy grata impresión.
    Lo dicho: Muchas gracias
    lusoluso

    ResponderEliminar
  6. como hago para que el calendario se oculte, de tal forma que al celeccionar la celda la cual designe lo despliegue y pueda seleccionar la fecha y se vuelva a ocultar

    ResponderEliminar
  7. Hola,
    para mostrar el Calendario al seleccionar determinado rango de celdas, deberás intercalar la llamada a ese objeto con el método INTERSECT.
    Echa un vistazo a
    ejemplo VBA de INTERSECT

    Espero te oriente
    Un saludo

    ResponderEliminar
  8. Pues no, no me ha orientado mucho.
    Saludos.

    ResponderEliminar
  9. Inserte el control calendar 11.0 a un proyecto de excel, esta trabajando bien al seleccionar las fechas, el problema empieza cuando protejo la hoja porque necesito protejer formulas y otros datos, ahi queda bloqueado tambien el calendario. Hay alguna forma de dejar libre el calendario aunque la hoja este protegida? Si alguien sabe como hacerlo lo agradecere mucho. elfimo2001@yahoo.com

    ResponderEliminar
    Respuestas
    1. Hola Elfimo,
      yo probaría en primer lugar configurar la Protección de hojas permitiendo modificar objetos, alguna vez, haciéndolo, permite trabajar sobre él...
      La otra opción es la de siempre, esto es, al construir tu código, justo antes de mostrar el calendario desproteges la hoja, y justo después de insertar el valor en una celda, proteges de nuevo la hoja...
      Slds

      Eliminar
  10. Saludos, ExcelForo.
    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.

    ResponderEliminar
    Respuestas
    1. Hola!!,
      pues en principio lo único que se me ocurre es que de alguna manera se ha quedado activado en 'Modo diseño', por eso al clicar sobre el te abre la ventana de Propiedades.
      Si puedes verificar esto???
      Slds

      Eliminar
    2. Verified. De hecho, no es la ventana Propiedades del 'Modo diseño', sino otra modal que puede verse clicando con el botón derecho sobre el calendario seleccionado y del menú emergente hay que elegir Objeto calendario>Propiedades.
      Gracias.

      Eliminar
    3. No sé que decirte,
      puedes enviarme el fichero a
      excelforo@gmail.com
      y le echo un vistazo?
      Slds

      Eliminar
  11. excelente foro amigo.. tengo una pregunta como hago para que una vez insertado el calendadrio la fecha me la asigne a la celda que tenga el foco en ese momento.. gracias

    ResponderEliminar
    Respuestas
    1. Muchas gracias!!

      suponiendo que estés empleando esta versión de Excel (ha cambiado para Excel 2010), sólo marca en la propiedad LinkedCell la celda donde quieras la fecha seleccionada.

      Um cordial saludo

      Eliminar
  12. Hola amigo, primero que todo MUCHAS GRACIAS por tan buen foro. Tu explicación ha sido de mucha ayuda en una planilla que estoy haciendo.

    Solo tengo una pregunta: Cada vez que se activa el pop del calendario, aparece con la fecha en se creó. Cómo puedo hacer que tome la fecha actual? (Probé con =TODAY(), pero no funcionó... Hay alguna forma?)
    Muchas gracias

    Tavo

    ResponderEliminar
    Respuestas
    1. Hola,
      prueba lo siguiente...
      En las Propiedades, busca la propiedad Value y en ella escribe =TODAY()

      Ahora mismo (por problemas con el PC) no puedo confirmártelo ya que sólo dispongo de la versión Excel 2010 y no tengo habilitados todos los controles...

      Slds

      Eliminar
    2. Estimado, de nuevo muchas gracias por tu ayuda. Lamentablemente, no funcionó. Hice lo que me indicaste, pero no funcionó. si se te ocurre alguna otra manera.
      Ahora bien, no sé si será un problema de mi Excel, pero se comporta extraño, ya que el campo VALUE no registra el valor =TODAY() (ni =HOY())... lo ingreso, guardo y luego sigue en blanco...
      Si se te ocurre algo, me dices por favor.

      Gracias de nuevo.

      Tavo

      Eliminar
    3. Hola Tavo...
      por descartar, ¿has probado con =Date?, así cogerá la fecha del día (la que tenga tu sistema)... también podrías probar con =NOW()

      Ahora mismo no se me ocurre otra manera.
      Ya comentas.
      Slds cordiales

      Eliminar
  13. No Funciona ni con date, ni con now(), ni con today... Parece que el problema pueda estar en que la propiedad Value espera la fecha en el formato especificado por la propiedad Format, en mi caso dtpShortdate. Si alguien da con el truquillo que lo comparta por favor...

    Muchas Gracias

    ResponderEliminar
    Respuestas
    1. En cuanto pueda reinstalar versiones anteriores, intentaré buscar la solución.
      Slds cordiales

      Eliminar
  14. hola : tengo una consulta que hacer , es referente a un cuadro de control de asistencia y e aplicado unas formulas que en algunas celdas se cumplen y en otras no , quiero saber por que suceden estas diferencias y si hay alguna manera de enviarles mi caso por email. gracias

    ResponderEliminar
    Respuestas
    1. Hola Ivan,
      puedes enviarme tu consulta a
      excelforo@gmail.com
      Slds

      Eliminar