Selector de fecha de Excel

¿Cómo insertar el selector de fecha en Excel?

Para insertar el Calendario desplegable, usaremos un Control ActiveX  que es 'Microsoft Date and Time Picker Control 6.0 (SP6)' .

Puede descargar esta plantilla de Excel de selector de fecha aquí - Plantilla de Excel de selector de fecha

Supongamos que tenemos que mantener datos para los empleados de una empresa. Hay varios campos como

  • Código emp
  • Nombre emp
  • Emp Fecha de incorporación
  • Departamento de Emp

Para ingresar datos en MS Excel, hemos creado el siguiente formato.

Para ingresar la fecha de ingreso a Emp, necesitamos crear un calendario desplegable para que sea más fácil para el usuario ingresar las fechas de ingreso.

Para crear un calendario desplegable, los pasos se dan a continuación: 

Necesitamos insertar un 'control ActiveX' llamado 'Microsoft Date and Time Picker Control 6.0 (SP6)' . Para insertar, usaremos el comando 'Insertar' debajo del grupo 'Controles' en 'Desarrollador'

Si la pestaña 'Desarrollador' no está visible, a continuación se muestran los pasos a seguir para hacerla visible.

  • Paso 1: en el menú 'Archivo' , elija 'Opciones'

  • Paso 2: Se abrirá un cuadro de diálogo llamado 'Opciones de Excel' . Elija 'Personalizar cinta' en el borde izquierdo del cuadro de diálogo. Marque la casilla de la pestaña 'Desarrollador' y haga clic en 'Aceptar' .

  • Paso 3: Ahora podemos ver la pestaña 'Desarrollador' al final de la cinta.

  • Paso 4: Elija 'Más controles' de Controles ActiveX.

  • Paso 5: Elija 'Microsoft Date and Time Picker Control 6.0 (SP6)' de la lista y haga clic en 'Aceptar' .

  • Paso 6: haga clic en cualquier lugar de la hoja de trabajo para crear el calendario desplegable.

  • Paso 7: haga clic con el botón derecho en 'Selector de fecha' y elija 'Propiedades' de la lista.

  • Paso 8: cambie el valor de 'Falso' a 'Verdadero' para la propiedad 'CheckBox' para que también se puedan aceptar valores nulos. Cierre el cuadro de diálogo 'Propiedades' .

  • Paso 9: haga clic derecho en Selector de fecha nuevamente y elija 'Ver código' en el menú contextual.

  • Paso 10: En 'Visual Basic Editor' , podemos ver que algún código ya está escrito. Reemplace el código con el siguiente código.

Código:

 Private Sub Worksheet_SelectionChange (ByVa l Target As Range) Con Sheet1.DTPicker1 .Height = 20 .Width = 20 If Not Intersect (Target, Range ("C: C")) Is Nothing Then .Visible = True .Top = Target.Top .Left = Target.Offset (0, 1) .Left .LinkedCell = Target.Address Else .Visible = False End If End With End Sub 

  • Paso 11: La primera declaración en el código le dice al compilador de MS Excel que ejecute el código cada vez que se selecciona una nueva celda (se cambia la selección). La celda seleccionada se envía al procedimiento secundario como 'Destino' .
 Private Sub Worksheet_SelectionChange (ByVal Target As Range)
  • Paso 12: estas declaraciones establecen la altura y el ancho del selector de fecha en 20 puntos en Excel. Se puede observar que hemos usado el operador 'Con' para que no necesitemos referirnos a DTPicker1 una y otra vez.
 Con Sheet1.DTPicker1 .Height = 20 .Width = 20
  • Paso 13: La siguiente cláusula 'Si' establece el criterio de que si se selecciona cualquier celda en la columna 'C' , solo entonces el Selector de fecha obtiene visibilidad. Hemos utilizado la función 'Intersecar' ya que esta función verifica si hemos seleccionado alguna celda en la columna C, entonces esta función devolverá la dirección, de lo contrario el valor sería nulo.
 Si no se cruza (objetivo, rango ("C: C")) no es nada, entonces .Visible = Verdadero 
  • Paso 14: la propiedad 'Superior' del selector de fecha se establece como igual al valor de propiedad 'Superior' de la celda seleccionada. Significa que esto irá junto con el borde superior de la celda seleccionada.
.Top = Target.Top
  • Paso 15: Esta declaración establece la propiedad izquierda del Selector de fecha como igual a la de la siguiente celda derecha de la celda seleccionada (Distancia del borde izquierdo de la columna D desde el extremo izquierdo de la hoja de trabajo). Para obtener la referencia de la siguiente celda de la derecha, hemos utilizado la función 'Desplazamiento' con 0 como argumento de fila y 1 como argumento de columna, ya que esto obtendrá una referencia a la celda de la siguiente columna.
.Left = Target.Offset (0, 1) .Left
  • Paso 16: esta declaración vincula el selector de fecha con la celda de destino para que el valor que se seleccione en el calendario desplegable que se muestra en la celda.
.LinkedCell = Target.Address
  • Paso 17: La instrucción 'Else' le dice al compilador que no muestre el Selector de fecha cuando se selecciona cualquier celda excepto la de la columna C.
Else .Visible = False
  • Paso 18: Al final, cerramos el 'Si'
 Terminara si 
  • Paso 19: Por fin, debemos cerrar 'Con'
 Terminar con 
  • Paso 20: Ahora, finalizará el Subprocedimiento.
 End Sub 

Asegúrese de guardar el archivo con la extensión '.xlsm' ya que guarda el código VBA que hemos escrito y podremos ejecutar este código cuando se seleccione cualquier celda en la columna C.

Ahora, cada vez que seleccionamos cualquier celda en la columna 'C', podemos ver un calendario desplegable en la esquina superior derecha de la celda seleccionada. Podemos abrir el calendario desplegable haciendo clic en el símbolo de la flecha hacia abajo.

Necesitamos hacer clic en cualquier fecha del calendario en el mes seleccionado para ingresar esa fecha en la celda seleccionada.

Podemos cambiar el mes al anterior o al siguiente usando el botón de flecha ubicado en el lado izquierdo y derecho del calendario.

También podemos hacer clic en el mes para elegir un mes del menú desplegable.

También podemos cambiar el año haciendo clic en el año y luego usando las flechas hacia arriba y hacia abajo para elegir el requerido.

Cosas para recordar

  • 'Microsoft Date and Time Picker Control 6.0 (SP6)' no está disponible para la versión de 64 bits de MS Excel.
  • Después de escribir el código VBA, debemos guardar el archivo con la extensión '.xlsm' (Libro de trabajo habilitado para macros de Excel); de lo contrario, el código VBA no se ejecutaría.