Mostrar control de calendario al elegir una celda en Excel

Este ejemplo que les comparto me ha sido útil al momento de crear formatos donde requiero que el usuario ingrese una fecha.

El problema surge cuando no se tiene definido si el formato de la fecha es DD/MM/AA o MM/DD/AA, sobretodo si la configuración definida en el Panel de control no correponde al mismo país.

Por eso, se me ocurrió que al momento de elegir la celda donde queremos introducir la fecha, nos salda el control de calendario y elegimos la fecha.

Cómo lo hago

Primero nos vamos a la pestaña Desarrollador (Programador en Excel 2010). En la sección Controles elegimos Insertar y elegimos el botón de la parte inferior derecha llamado Más controles.

DTPicker

En la lista que aparecerá elegimos el control Microsoft Date and Time Picker Control 6.0 (SP6).

DTPicker2

En la misma pestaña de Desarrollador damos click en el botón Modo diseño para adecuar el control al tamaño de la celda.

DTPicker3

Dentro de Visual Basic para aplicaciones (Alt + F11), en el Objeto donde está el control, vamos a poner el siguiente código.

'Asignar el valor de Picker a la celda B2
Private Sub DTPicker1_Change()
Range("B2").Value = DTPicker1.Value
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Si la celda elegida es B2, se muestra el Picker
If Not Intersect(Target, Range("B2")) Is Nothing Then
With DTPicker1
    .Visible = True
    .Top = 15.75
    .Left = 86.25
    .Width = 145
    .Height = 17.25
End With
'En todo caso se oculta
Else
DTPicker1.Visible = False
End If
End Sub

Y como resultado tenemos que cada vez que se elija la celda B2 saldrá el control de calendario para elegir una fecha y esta se reflejará en dicha celda.

DTPicker4

:: Descargar EXCELeINFO – Control calendario en celda.xlsm

You may also like...

  • Pingback: TITULO Mostrar control de calendario al elegir una celda en Excel | MVPs de LATAM()

  • Logan

    Buen dia Sergio

    Agradezco mucho tu información acerca de excel, he aprendido muchas cosas leyendo tu blog, en este momento necesito un aplicativo o un marco en excel donde tengo una lista de fechas de nacimiento de empleados, y sacar un cuadro de dialogo avisando su cumpleaños ojala fuera automático al abrir el excel.
    Otra es donde esta la fecha de ingreso de los empleados, y habilitar un mensaje cada 3 meses, para recordar la renovación del contrato, y ojala pudiera modificar en una segunda hoja una carta donde se modifique el nombre y la fecha.
    No se si es mucho pedir pero vos eres un maestro y la verdad no se con que herramientas puedo hacer eso, yo programo en java y desconozco el código vba.Serias tan amable de poderme ayudar

    mi correo andrex12@hotmail.com nos podemos poner en contacto por ahi.

    Exitos

    • sergioacamposh

      Hola Logan.

      Para que todos aprendamos prefiero tocar el tema aquí mismo en el Blog.

      Con respecto a lo que comentas, la lógica sería que al abrir Excel te avise si el día de hoy (cada que abres) tienes algún empleados cumpliendo año ??

      De la renovación de contrato, se puede hacer que te muestre quiénes han pasado de los 3 meses o en una celda ponerle “Contrato vencido” en caso de que la fecha del contrato pasa los 3 meses, cómo ves ??

      Con respecto a la segunda hoja, mejor te recomiendo usar Combinar correspondencia de Word.

      Espero tus comentarios.

    • Guest

      Hola Sergio vos podrías hacer un ejemplo de lo que necesito 😉

    • Primero nos vamos a la pestaña Desarrollador (Programador en Excel 2010). En la sección Controles elegimos Insertar y elegimos el botón de la parte inferior derecha llamado Más controles.

  • Pingback: EXCELeINFO – Excel vba e información - Usar el control Date and Time Picker (mscomct2.ocx) en Excel sobre Windows 7 y 8 de 64 bits()

  • Logan

    Hola Sergio vos podrías hacer un ejemplo de lo que necesito 😉

    Sería que al abrir Excel te avise si el día de hoy (cada que abres) tienes algún empleados cumpliendo año, renovación de contrato, se puede hacer que te muestre quiénes han pasado de los 3 meses o un mensaje “Contrato vencido” en caso de que la fecha del contrato pasa los 3 meses, combinando correspondencia en word

  • Alex

    Hola Sergio, excelente blog! Estaba intentando crear el calendario desplegable pero me sale “No se puede insertar el objeto” será que sabes porque sucede esto, uso la versión 2007. Gracias

  • omar

    Hola Sergio, antes que nada permiteme felicitarte por tu blog, por aportar tus conocimientos sin afan de recibir algo a cambio. Tambien quiero preguntarte como puedo hacer para que en una misma hoja pueda insertar dos calendarios, los uso para fecha inicial y final. Si me puedes ayudar te lo agradezco y si no llegas a poder por tus labores personales te entiendo y de todas maneras te agradezco. mi correo es omarherreraj@outlook.com

    • Sergio Alejandro Campos

      Sigue el mismo procedimiento pero inserta otro control en la otra celda donde quieras la fecha final.

  • JuanV. Sepúlveda

    Hola Sergio

    Una pregunta, después de que pones el código en el módulo de visual basic, ¿que se hace?, ¿cómo se guarda?

    Saludos y gracias por tu valiosa ayuda.

    Juan V. Sepúlveda

    • sergioacamposh

      Primero debes insertar el control del calendario y después pegar el código en el módulo.

      Con respecto a tu pregunta de Cómo se guarda no la entiendo bien.

  • peDRINK

    En mi menú de insertar más controles, no está Microsoft Date and Time Picker Control 6.0 (SP6). ¿Cómo lo agrego?

  • C. Andrés Góngora Petrovich

    Hola Sergio, Pude colocar el formulario y que se abra cuando elijo la celda pero, tengo dos inconvenientes:
    1. El formulario se cambia de posición automáticamente de la celda D7 a la B2 (yo cambié el código de formulario para que se active en D7 y sí se activa en D7 y no en

  • C. Andrés Góngora Petrovich

    Hola Sergio, Pude colocar el formulario y que se abra cuando elijo la celda pero, tengo dos inconvenientes:
    1. El formulario se cambia de posición automáticamente de la celda D7 a la B2 (yo cambié el código de formulario para que se active en D7 y sí se activa en D7 y no en B2, pero el formulario se desplaza hacia esta ultima.

    2. Cuando elijo la fecha no se registra ningún dato en D7, Puedo mover la fecha en el calendario pero no afecta a la celda

    Gracias

  • CAmilo

    ola Sergio esto funciona para poner en varias celdas o solo se puede uno por hoja?

  • claudy

    Hola buenos dias! les planteo lo que necesito.

    Tengo un formato en el cual llevo la fecha prevista y la fecha real, pero 15 dias antes de la fecha prevista quiero que la celda de fecha real cambie de color.
    Ayudenme plis

  • JoaoM

    Quisiera poder tener el calendario DTPicker que me diera para que acompañe segun la celda que seleccione en B, desde B2 hasta B50000 + -, es decir que;
    si seleciono B45 este aparezca al lado de B45, si selecciono B210 aparezca al lado de B210 etc.
    que acompañe segun la celda que selecciono

    ¿será posible? Sergio?

  • JoaoM

    Como recibo notificaciones de respuesta de este hilo (tema)

  • Yvón

    Hola, hice tal cual indicas y me funciona, pero ahora mi problema es que la fecha, osea, el valor tengo que copiarlo a otra hoja, pero no me permite copiar, como puedo copiar la fecha y grabarla en otra hoja.

  • Luis Parra

    Se puede hacer que aparezca el calendario segun la celda que seleccione en B, desde B2 hasta B500 , es decir que;
    si seleciono B45 este aparezca al lado de B45, si selecciono B210 aparezca al lado de B210 y que se cambie la fecha solo en esa celda.

  • Marco Felix

    buen dia sergio estoy teniendo problemas al tratar de utilizar el dpicker al ya tengo el control en mi toolbox ya corri cmd y me diso success pero al momento de seleccionar el control y tratar de usarlo en el comentario me muestra un error “Element not found” https://uploads.disquscdn.com/images/5b9e82061c5e9e8d51da7d0697b62fea9c1d446b2d61eef14dfb633f7d797089.jpg

RECIBE CONTENIDO EXCLUSIVO

Tips, trucos, videos para convertirte en un EXPERTO EN EXCEL y llegar al éxito. Suscríbete y recibe el mejor contenido en tu correo.