Está en la página 1de 16

Control calendario en Excel 2010 con VBA Enero

Control MonthView 2013

Comentarios

Como ya es sabido, en MS Excel 2010 fue removido el Control Calendar, conocido


como mscal.ocx, este ya no existe en el paquete de ofimática de Microsoft Office 2010,
por tanto, es necesario tomar otras alternativas y/o caminos diseñados por Microsoft
para solventar esta falencia, que a pesar de todo resultó en una herramienta útil al
trabajar con fechas en Excel y más si trabajamos con formularios desde el entorno
VBA.

Ahora, existen tres alternativas posibles para poder trabajar con Calendarios en MS
Excel 2010, la primera, consiste en utilizar el Control Data Picker desarrollado por
Sam Radakovitz; la segunda, es descargar el control mscal.ocx e instalarlo en nuestra
PC, pero además de ello es necesario registrar dicho control para poder usarlo sin
ningún problema, el único inconveniente es que en Windows 8 este control ya no
permite ser registrado, por lo que en última instancia ya no puede ser usado; y la
tercera, que a mi parecer suele ser la mejor opción por ser un control de fácil uso y
además muy comprensivo y entendible a la hora de programarlo, es utilizar el control
MonthView.

Veamos a través de un ejemplo muy sencillo como ingresar fechas en una Hoja de
Trabajo de Excel (Hoja de cálculo) usando un calendario para realizar la selección de la
fecha y posteriormente se inserte en la celda actual o celda seleccionada.

Nota: para el desarrollo de esta ayuda, asumo que el lector (participante y/o usuario)
tiene pleno conocimiento o nociones mínimas de como activar la Pestaña Programador
de su MS Excel 2010, además de como activar y entrar en el entorno de desarrollo de
VBA, es decir el Editor de VBA.

En caso de no saberlo, por favor diríjase a este video de corta duración (2 Minutos) en
el cual se explica de manera clara estos requerimientos mínimos.

Enlace a YouTube: https://www.youtube.com/watch?v=GJ5W20U1DaU


Título del Video: Activar la pestaña programador y el editor de VBA en Excel.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 1
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

1. Activar el Control Microsoft MonthView Control 6.0 (SP6).

Inicialmente y es claro que lo primero que debemos hacer es abrir un Archivo de Excel
nuevo y guardarlo en una ubicación conocida, con un nombre conocido.

Estando ya en el documento de MS Excel 2010 en blanco, procedemos a activar el


Editor de VBA.

a) Ahora insertamos un Formulario (UserForm) en nuestro proyecto, a través del


Menú Insertar y dando Click en el comando UserForm.

b) Observe como el formulario se ha insertado y se ha desplegado


automáticamente un pequeño cuadro de controles llamado Cuadro de
herramientas.

c) Con el cuadro de herramientas seleccionado colocamos el puntero del mouse en


la parte interna de dicho cuadro, y damos Click derecho para mostrar el menú
contextual, donde seleccionamos la opción Controles adicionales de dicho
menú y damos Click en él.

d) Con esto nos debería aparecer el cuadro de dialogo Controles adicionales, en el


cual debemos buscar el control Microsoft MonthView Control 6.0 (SP6),
seleccionarlo (Activar) y dar Click en Aceptar. Ver Figura 1.

e) Vemos como aparece un nuevo control en el Cuadro de herramientas el cual ya


tenemos a disposición para usarlo en nuestros Formularios. Ver Figura 2.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 2
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Figura 1. Vista de los cuadros de diálogo: Controles adicionales y Cuadro de herramientas.

Figura 2. Nuevo control en el Cuadro de herramientas.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 3
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Me siguen…

2. Dar nombre al Formulario (UserForm1) e Insertar un Objeto de Tipo MonthView.

A esta altura ya hemos superado la parte más complicada del ejemplo, ahora lo que
haremos es dar un nombre a nuestro formulario que de momento se llama
UserForm1, para ello debemos modificar las Propiedades (Name y Caption) del
Formulario a través de la Ventana de propiedades. Es necesario recordar que debemos
tener activo el Formulario para cambiar sus propiedades, es decir tenerlo seleccionado.

En la Ventana de propiedades he cambiado estas dos propiedades así:

En la propiedad Name he colocado frmCalendario, y en la propiedad Caption he


colocado Calendario. Es claro y evidente que la propiedad Caption es la que nos
permite visualizar el nombre que se mostrara al usuario final y la propiedad Name es
el nombre mediante el cual llamaremos al formulario u objeto durante la programación
del mismo con VBA. Ver Figura 3.

A continuación,

Insertamos un Objeto de tipo MonthView en nuestro Formulario, para ello solo


arrastramos el control MonthView del Cuadro de herramientas y lo soltamos en el
interior del Formulario. Como vemos, aparece un pequeño calendario dentro del
Formulario.

Ahora solo nos resta colocar un nombre al Objeto MonthView y alterar la Propiedad
ShowToday (Para mostrar la fecha actual del ordenador en el calendario), para ello
seleccionamos el objeto recién insertado y en la Ventana de propiedades alteramos la
Propiedad Name que de momento se encuentra como MonthView1, y establecemos
en True la Propiedad ShowToday.
Yo le he puesto mvMiCalendario a la propiedad Name.

Lo último que nos queda es ajustar el tamaño de mi " mvMiCalendario" dentro del
Formulario. Ver Figura 4.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 4
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Figura 3. Alteramos la Propiedad Name y Caption del Formulario.

Figura 4. Alteramos la Propiedad Name y ShowToday del mvMiCalendario.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 5
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Ahora, a lo que vinimos, manos al código.

3. Lanzar el Formulario "frmCalendario" cuando seleccionemos cualquier celda de la


columna "E" de nuestra Hoja de trabajo (Hoja de cálculo).

Para hacer más didáctico el ejercicio, solo nos ocuparemos de la Columna "E" de
nuestra Hoja de trabajo, es decir, programaremos el Formulario de manera que
cuando nos ubiquemos en cualquier celda de la Columna "E" nuestro Formulario se
dispare y nos permita seleccionar una fecha que posteriormente será insertada en la
celda seleccionada.

Para ello, utilizaremos el Evento Worksheet_SelectionChange de la Hoja1.

¿Cómo se hace eso? En la Ventana del Explorador de proyectos del Editor de VBA,
seleccionamos la Hoja1, a continuación damos Click derecho para mostrar el menú
contextual, y seleccionamos la Opción Ver código. Damos Click en él. Ver Figura 5.

Si ha hecho esto correctamente, se desplegara la ventana de código correspondiente a


la Hoja1 (Es decir, la que corresponde a la primera Hoja de trabajo).
Ahora nos ubicamos dentro de dicha ventana, y hacemos Click en la primera Lista
desplegable ubicada en la parte superior de dicha ventana, es decir, la que lleva el
nombre de General, como vemos, solo aparecen dos elementos, (General) y
Worksheet, este último se refiere al Objeto de la Hoja de trabajo el cual referencia a
la Hoja1, si hacemos Click en él se cargara automáticamente el evento por default
asociado a la Hoja1, el cual corresponde a (Worksheet_SelectionChange). Ver Figura 6.

Dentro de estas dos líneas de código que aparecieron nuevas, y que corresponden al
Evento (Worksheet_SelectionChange), cuya ejecución se da cuando realizamos un
movimiento de celda en la Hoja1, o dicho de una mejor manera, cada vez que ocurre
un cambio de selección en las celdas, el evento es ejecutado.

Escribimos el siguiente código:

Option Explicit 'Permite que se declaren las variables obligatoriamente.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


If ActiveCell.Column = 5 Then
frmCalendario.Show
End If
End Sub

Ver Figura 7.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 6
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Figura 5. Menú contextual que muestra la opción Ver código.

Figura 6. Cargamos el Evento por default que corresponde a una Hoja de trabajo.

Figura 7. Código para lanzar el Formulario cuando se seleccione una celda de la Columna "E".

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 7
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Figura 8. Si seleccionamos una celda de la Columna "E" se despliega el Formulario con el


calendario.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 8
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Por seguridad, salvamos el proyecto y continuamos…

4. Ahora pasaremos el valor que elegimos en el calendario, a la celda.

Este paso comprende la programación del Evento (mvMiCalendario_DateClick) asociado


por default al Objeto mvMiCalendario, el cual corresponde a un Evento del control
MonthView insertado en el Formulario.

Para ello, damos Click derecho sobre el Objeto mvMiCalendario insertado en el


Formulario, esto con el fin de desplegar el menú contextual del cual elegiremos la
opción Ver código, hacemos Click para ver la Ventana de código. Ver Figura 9.

Si hacemos todo correctamente, entonces se cargara la Ventana de código


correspondiente, y además de eso se cargara automáticamente el Evento
(mvMiCalendario_DateClick) que se asocia por default al Objeto mvMiCalendario. Ver
Figura 10.

Dentro de estas dos líneas de código que aparecieron nuevas, y que corresponden al
Evento (mvMiCalendario_DateClick), cuya ejecución se da cuando realizamos un Click
en alguna fecha del calendario, o dicho de una mejor manera, cada vez que hacemos
Click en una fecha, el evento es ejecutado.

Escribimos el siguiente código:

Option Explicit 'Permite que se declaren las variables obligatoriamente.

Private Sub mvMiCalendario_DateClick(ByVal DateClicked As Date)


ActiveCell.Value = DateClicked
Unload frmCalendario
End Sub

Ver Figura 11.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 9
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Figura 9. Menú contextual que muestra la opción Ver código del objeto mvMiCalendario.

Figura 10. Ventana de código del Objeto mvMiCalendario y Evento cargado por default.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 10
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Figura 11. Código para pasar el valor de fecha del calendario a la celda activa o seleccionada.

Click

Figura 11 - 12. Al hacer Click en una fecha del calendario esta se carga en la celda activa o
seleccionada.

Click

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 11
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Salvamos el proyecto y continuamos…

5. Hacemos aparecer el Formulario (frmCalendario) junto a la celda de la Columna "E"


que seleccionemos.

Para hacer aparecer el Formulario (frmCalendario) al lado de la celda que activemos o


seleccionemos, es necesario invocar al Evento UserForm_Activate del Formulario.

Para ello, seleccionamos de la lista desplegable que se encuentra en la parte superior


de la Ventana de código del paso anterior (Literal 4), el elemento UserForm, vemos
como se inserta el Evento por default para el Formulario, llamado (UserForm_Click).
Ver Figura 13.

Como este Evento no nos sirve para el objetivo al cual queremos llegar, debemos
cambiar o invocar al Evento UserForm_Activate. Para ello debemos hacer Click en la
segunda lista desplegable que aparece en la parte superior de la Ventana de código y
hacer Click en el elemento Activate, vemos como aparece el evento antes
mencionado. Ver Figura 14.

En este Evento, escribimos el siguiente código:

Option Explicit 'Permite que se declaren las variables obligatoriamente.

Private Sub UserForm_Activate()


With frmCalendario
.Left = ActiveCell.Left + ActiveCell.Width + 25
.Top = ActiveCell.Top + 75
End With
End Sub

Ver Figura 15.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 12
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Figura 13. Seleccionamos el Objeto UserForm y se carga el Evento por defecto asociado a este
Objeto.

Figura 14. Selección del elemento Activate de la segunda lista desplegable de la Ventana de
código.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 13
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Figura 15. Código para mostrar el Formulario junto a la celda seleccionada de la columna "E".

Figura 16. El Formulario con el Calendario aparece justo al borde derecho de la celda
seleccionada y además al hacer Click en el, se inserta la Fecha del calendario.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 14
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Figura 17. El Formulario con el Calendario aparece justo al borde derecho de la celda
seleccionada y además al hacer Click en el, se inserta la Fecha del calendario.

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 15
Control calendario en Excel 2010 con VBA Enero
Control MonthView 2013

Es necesario aclarar que para desplazarse por los años, simplemente basta con hacer
un Click sobre el año que aparece en el calendario, con lo cual nos aparecen unas
flechas de desplazamiento donde podemos aumentar, disminuir o desplazarnos por los
años para seleccionar la fecha que más nos convenga.

Espero este manual aclare sus dudas sobre el uso del control MonthView para el
manejo de fechas en MS Excel 2010.

¡Saludos!

Canal Youtube: www.youtube.com/user/jarmoncada01 Blog: http://excelhechofacil.blogspot.com

Mail: jarmoncada@gmail.com 16

También podría gustarte