



Para insertar fechas creamos un formulario con un calendario que permita seleccionar la fecha deseada en la celda activa (Control de calendario Excel).
El control calendario depende del archivo "MSCAL.OCX" Si Excel 2016 o 2013 se instala desde una versión anterior se encontrará disponible. Si se instala de nuevo sin actualización ya no se encuentra disponible. El control se incluye desde la versión 2.0 y estaba pensado para Microsoft Access.
Podemos copiar el archivo de otro equipo o de una fuente de confianza e instalarlo en nuestro ordenador: C:\Windows\System32 o C:\Windows\SysWow64.

- EDITOR VISUAL BASIC. Abrimos el editor de Visual Basic.
Abrir el libro deseado
Guardar con la extensión *.xlsm. Libro habilitado para macros.
Pulsar la tecla Alt y mantener pulsada
Pulsar la tecla F11. Mostrará el editor de Visual Basic.
- INSERTAR FORMULARIO
Ir a: Barra de menús
Insertar
UserForm. Insertará un formulario vacío.
PROPIEDADES USERFORM. Mostrar ventana de propiedades, si no está visible. Ir a: Barra de Menú
Ver
Ventana Propiedades; O Ir a: Barra de Herramientas Estándar
Botón: Ventana de propiedades; O Atajo Teclado: F4; Mostrará la ventana de propiedades.
Ir a: Ventana Propiedades
Clic Ficha Alfabética. Muestra las propiedades en orden alfabético.
Aplicar los valores a la propiedad UserForm:
Propiedad Valor Name Mi_Formulario Caption Calendario Height 165 Width 225
- CONTROL: DE CALENDARIO
Ir a Panel: Cuadro de Herramientas
Botón derecho del ratón
Controles adicionales. Mostrará ventana de controles.
Activar la casilla: Control de calendario 12.0. O la versión disponible.
Pulsar el botón Aceptar. Cierra ventana e inserta el control en el cuadro de herramientas.
Ir a: Cuadro de herramientas
Clic sobre el Control de calendario. Activamos el control para insertarlo en el formulario.
Ir al Formulario
Clic en el interior. Insertará el control de calendario.
Ir a: Ventana Propiedades
Clic Ficha Alfabética. Muestra las propiedades en orden alfabético.
Aplicar los valores a la propiedad del control MonthView:
Propiedad Valor Name Mi_Calendario Height 144 Left 0 Top 0 Width 216
VISTA DE CÓDIGO DEL USERFORM. Insertamos el código para el formulario.
Ir a: Barra de menús
Ver
Código; O también, Atajo de teclado F7.
Escribir el código 1:
Option Explicit
Private Sub UserForm_Initialize()
If IsDate(ActiveCell.Value) Then
Mi_Calendario.Value = DateValue(ActiveCell.Value)
Else
Mi_Calendario.Value = Date
End If
End Sub
- Comprueba si la celda activa contiene una fecha. Si tiene fecha, muestra
en el calendario dicha fecha, en caso contrario, muestra la fecha actual.Escribir el código 2: Transfiere la fecha a la celda activa.
Private Sub Mi_Calendario_Click()
ActiveCell.Value = Mi_Calendario.Value
Unload Me
End Sub
- INSERTAR MACRO. Permite ejecutar la macro para que muestre el formulario.
Ir a: Ir a: Barra de Menú
Insertar
Módulo. Mostrará la ventana del módulo donde escribimos la macro.
Escribir el código de la macro:
Sub Muestra_Calendario()
Mi_Formulario.Show
End Sub
- Envía la fecha del calendario a la celda activa y cierra el formulario.
- EJECUTAR PROCEDIMIENTO.
Ir a: Hoja1 del libro Excel
Clic sobre la celda deseada. Mostrará formulario con el calendario.
Ejecutar la macro
Seleccionar la fecha deseada. Insertará la fecha en la celda.


- Consultar:
Funciona a la perfección.
Gracias
Hola Abel!! fijate que a mi no me funciona, ya copie el archivo, pero no lo reconoce,, me podrías pasar el procedimiento para copiarlo, tengo excel 2016..
de antemano, te agradezco....
No me funcionó :/
Hola Ana,
Siguiendo los pasos indicados, no deberías tener ningún problemas. Verifica que los nombres coincidan en el código y los controles. Sí indicas algún detalle concreto podremos ayudarte.
Saludos,
En controles adicionales de excel 2016 no esta la opción control de calendario 12.0, como lo hago.
Gracias.
Hola José,
El control calendario depende del archivo "MSCAL.OCX" Si Excel 2016 o 2013 se instala desde una versión anterior se encontrará disponible. Si se instala de nuevo sin actualización ya no se encuentra disponible. El control se incluye desde la versión 2.0 y estaba pensado para Microsoft Access.
Podemos copiar el archivo de otro equipo o de una fuente de confianza e instalarlo en nuestro ordenador: C:\Windows\System32 o C:\Windows\SysWow64.
También puede presentar problemas en macros que llamen al control.
Saludos.
Hola, disculpa de donde puedo bajar la actualización para tener la opción control de calendario?
Hola Victoria,
No existe ninguna actualización, se trata de localizar el archivo indicado desde un ordenador con versión anterior de Excel 2013/2016. e instalarlo en la ruta indicada.
Saludos.
A mi no me aparece en Controles adicionales la opción de "Control de Calendario".
Qué puedo hacer?
Saludos.
Hola Luis,
Ya respondido en comentario anterior.
de mucha ayuda me agrado mucho el funcionamiento de esta macro y se presta para poderlo manipular a mi gusto el unico problema que se me presento fue lo del control de calendario no lo tenia pero se soluciono buscando el archivo descargarlo y copiarlo a su carpeta correspondiente
se supone que al dar clic en la celda deberia de aparecer el calendario es correcto? tengo ya realizado el calendario lo que no es cuando ya se ejecua en la hoja de excel. podria indicarme el ultimpo paso para poder ver al dar clic en la celda seleccionada
Hola Juan Antoio,
El codigo de la macro es el que muestra el calendario y la fecha en la celda activa, Revisa los pasos y el código que sea correcto.
Saludos.
COMO HAGO PARA QUE EL CALENDARIO SIEMPRE ESTE VISIBLE SIN NECESIDAD DE ACTIVAR UNA CELDA O UNA MACRO ...
EXCELENTE, consulta, como hago para predeterminar una celda unica donde quiero que aparezca la fecha?
Hola Javier,
Reemplaza el código por el siguiente, cambiando A1 por la celda deseada (En 3 sitios):
Private Sub UserForm_Initialize()
If IsDate("A1") Then
Mi_Calendario.Value = "A1"
Else
Mi_Calendario.Value = Date
End If
End Sub
Private Sub Mi_Calendario_Click()
Range("A1") = Mi_Calendario.Value
Unload Me
End Sub
Saludos.
No me aparece control de calendario a pesar de que ya puse el archivo ocx donde corresponde.
Que puedo hacer ?
Hola Eli,
Si has instalado el archivo en el sitio correcto, deberás de activarlo (Apartado 1) para que se muestre en el cuadro de control de herramientas.
Saludos
HOLA BUENAS TARDES HE HECHO TODOS LOS PROCEDIMIENTOS PERO NO CAMBIA LA FECHA SOLO MUESTRA LA FECHA ACTUAL Y AL POSICIONARME EN UNA CELDA EN PARTICULAR NO MUESTRA EL CALENDARIO. PODRIAS AYUDARME?
GRACIAS.
Hola Cocoloco,
Revisa los nombres aplicados en el apartado 4 de Insertar formulario para que coincidan con el del código.
Saludos.
La opción para los que no tenemos la versión es Microsoft MonthView Control 6.0 (SP6)
Hola Nancy, he activado la opción que indicas, pero cuando intento seleccionar el mes o el año me desaparece el calendario. ¿alguna solución?
Hola Jdovalg,
Lo que comentas no es normal, revisa el código por si tienes algo mal escrito.
Saludos.
En herramientas la opcion de "controles adicionales" esta desactivada. No me es posible usar esa herramienta.
Hola Dulce,
Según se indica en los pasos, para que está activado los controles adicionales tienes que estar en el formulario en vista objeto.
Saludos.
Hola,
No piloto mucho pero creo que hay un error en el código 1, debería ser Private Sub Mi_Formulario_Initialize()
Hola Jdoval,
En parte tienes razón, tanto Private Sub UserForm_Initialize() como Private Sub Mi_Formulario_Initialize() es correcto.
UserForm, es el nombre genérico que aplica Excel internamente y Mi_Formulario es el nombre asignado por nosotros.
Saludos
Solucionado, el error estaba en el evento de Mi_Calendario, en lugar de Click, DateClick. El código 2 quedaría de la siguiente forma:
Private Sub Mi_Calendario_DateClick(ByVal DateClicked As Date)
ActiveCell.Value=Mi_Calendario.Value
Unload Me
End Sub
El codigo uno se queda igual?
Hola Nancy,
El código uno es operativo y en los comentarios se añaden opciones concretas a él.
Saludos.
hola puedes poner fotos para ubicar el paso control de calendarios?
Hola Cris,
Hemos añadido imagen en Control: De calendario punto 4, para facilitar a compresión de la práctica.
Saludos.
Buen dia, realice las instrucciones indicando una casilla en especifica para mostrar la fecha, pero cuando selecciono la celda, no me aparece automaticamente el calendario para seleccionar,tengo que ir a macro y ejecutarla. ¿Que estara mal en mi código? Gracias.
Hola Alejandra,
Con las indicaciones que me das es dificil identificar el error. Revisa los nombres y el código que sea como se indica en el post (algo no coincide).
Saludos.
Hola, yo también tengo que ejecutar la macro manualmente. Funciona todo, pero no está enviando la ejecución cuando haces clic en la celda tipo fecha.
Hola Gema,
Por favor revisa tu código escrito, puedo imaginar que el error se encuentra en la expresión: ActiveCell.Value = Mi_Calendario.Value de la macro Mi_Calendario_Click(); o en el nombre del elemento.
Saludos.
excelente guia para poder mejorar macros
Como hago para modificar las fechas, del calendario? pues no corcuerdan con el calendario real.
Hola Mercedes,
Para que muestre el calendario con la fecha actual deberemos modificar el código de la macro INSERTAR MACRO, quedando:
Sub Muestra_Calendario()
Mi_Formulario.Show br>
Mi_Calendario = Date
End Sub
me sale error(sombreado amarillo) cuando ingreso lo sgte:
Mi_Formulario.show
Hola Paul,
Revisa el código que este igual a como se indica.
Saludos.
Hola, está muy buena la guía, pero me sucede lo mismo que las personas anteriores, no se me ejecuta la macro al clickear la celda; ya revisé el código varias veces y lo digité tal como dice la guía, qué puedo estar haciendo mal?
Hola Valentina,
El problema es que los nombres que tienes aplicados no coinciden, verifica el código:
- Vista de código del userform. Punto 3. Mi_Calendario.
- Control de calendario. Punto 7. Mi_Calendario.
- Y en el resto del código.
Saludos.
Hola ya cree el calendario y todo ok perfecto, pero cuando envio el libro de excel por correo al cliente, este me dice que le sale error que no encuentra el objeto o la forma. Como hago para que este libro se abra en otros pcs y muestre perfectamente el calendario?, ya he mirado otro archivo con calendarios descargados en internet y se puede ver el calendario pero no se como le hace para que se pueda descargar y ver sin ningun error o que pida activar algun complemento al usuario. Agradezco su ayuda por fa
Hola Mercedes,
Si el libro Excel se lo remites a otro usuario, deberá de tener instalado el control indicado, evidentemente si no lo tiene, no podrá ejecutarse. Depende de la versión de Excel. Se puede insertar como se indica o empaquetar el libro y el control para que se instale.
Saludos.
Excelente! Funciona al 100, si lo siguen al pie de la letra.
Saludos desde Tepetlixpa, Estado de México.
alguien ya tiene este archivo funcionando ?
Hola! buenas tardes!....
En lo particular me funcionó en excel 2010 con System32.....
Pero el Excel 2016 con plataforma Syswow64.... no me aparece de ninguna manera...
Me podrían apoyar...
Gracias!!!!
Como hago para que la macro se active al presionar la celda?
Hola Francisco,
La macro lo realiza. Revisa el código y los nombres que coincidan con el indicado.
Saludos.
Esta muy buen, y esta macro como la puedo aplicar para generar fechas DESDE: HASTA: ¿?
eso es lo que necesito
Gracias de antemano
Hola!
El modulo me da problemas, pongo Mi_Formulario.Show y no funka, que puedo hacer?
Hola Dan,
Sin más pistas no puedo indicar donde se produce el error, pero repasa el código escrito.
Saludos.
Hola, ayuda, me dice error de automatización, error 2147220995, el código esta tal cual, es excel 2016
Hola Alan,
El número de error hace referencia a un objeto que no está disponible, revisa el código.
Saludos.
Hola...
Consulta en equipos con 64bits no funciona esta propiedad????
Hola Carola,
También funciona con 64 bits.
Saludos.
Hola... me parece ok la pagina !!!
Tengo un libro con varias hojas, cada una de las hojas es un dia del mes; las tengo nombradas desde la 1 a la 31, pero quisiera que cuando escriba en una selda de la hoja 1 el dia MARTES por ejemplo, el resto de las hojas tomaran su dia de semana correspondiente a el numero de la hoja... Gracias ... si alguien me ayudara..
Hola Osvaldo,
Deberás de aplicar la función DIASEM. Trabajando con el número del día de la semana y aplicarle formato de celda personalizado como dddd.
En el resto de hojas puedes aplicar A1+1, A1+2, etc. para obtener el día siguiente.
Saludos.
En Visual Basic en las herramientas, controles adicionales no me paarce la opcion de "Control de Calendario", mi excel es 2013
Hola Otto,
Si lees el articulo se indica la causa, siempre puedes importar el control.
Saludos.