Calendario automático desde cualquier celda en excel

Calendario automatico en excel

Registra fechas con mayor precisión y rapidez en cualquier celda de Excel, sin necesidad de ingresarlas manualmente.

  1. Calendario automático desde cualquier celda en excel: Este aplicativo, desarrollado con macros, permite insertar fechas desde una lista desplegable al seleccionar una celda, optimizando el registro de datos. Su diseño intuitivo facilita una selección rápida y precisa, eliminando la necesidad de ingresar manualmente las fechas.

Cuando se trabaja con grandes volúmenes de información, es común cometer errores al digitar fechas, especialmente en tareas de actualización de datos del personal y en el sector de recursos humanos o administrativo. Esta macro no solo reduce la probabilidad de errores, sino que también agiliza el proceso de inserción de fechas, proporcionando mayor control y eficiencia en la gestión de bases de datos.

El código fuente de esta macro está disponible para quienes deseen personalizarla y comprender el funcionamiento de esta herramienta que simplifica el manejo de fechas.

  1. Características
  • El código está disponible para personalización e integración en otros proyectos.
  • Elimina la necesidad de escribir manualmente las fechas, agilizando el proceso de registro de datos.
  • El diseño del calendario es fácil de entender y utilizar, permitiendo una selección de fechas rápida y precisa.
  • Funciona en cualquier versión de Excel que soporte macros, sin requerir complementos adicionales.
  1. Descarga de archivo

Haz clic en el siguiente botón para descargar gratis la macro calendario automático desde cualquier celda en excel.

  1. ¿Cómo funciona la macro de calendario automático desde cualquier celda en excel?

a.- La macro se activa al hacer clic en una celda vacía o en una que ya contenga una fecha, siempre y cuando pertenezca a una columna cuyo encabezado (en la fila 1) sea "FECHA".

b.- Al activarse la macro, aparecerá un calendario emergente que permitirá al usuario seleccionar la fecha deseada. La fecha seleccionada se insertará automáticamente en la celda donde se hizo clic.

c.- Si se necesita personalizar la macro para que el calendario aparezca automáticamente en una fila diferente a la primera, se deben seguir estos pasos:

  • Presionar ALT + F11 para abrir el editor de Visual Basic.
  • Hacer doble clic en ThisWorkbook (que se encuentra en el panel de la izquierda).
  • En el código que aparece a la derecha, modificar el número de fila correspondiente al encabezado "FECHA".
Public WithEvents MiLabel As MSForms.Label
Private Sub MiLabel_Click()
On Error Resume Next

If Val(Mid(MiLabel.Name, 2)) = 1 Then
   If Calendario.xMes.ListIndex > 0 Then
      Calendario.xMes.ListIndex = Calendario.xMes.ListIndex - 1
   Else
      If Calendario.xAño.ListIndex > 0 Then
         Calendario.xMes.ListIndex = 11
         Calendario.xAño.ListIndex = Calendario.xAño.ListIndex - 1
      End If
   End If
End If

If Val(Mid(MiLabel.Name, 2)) = 3 Then
   If Calendario.xMes.ListIndex < 11 Then
      Calendario.xMes.ListIndex = Calendario.xMes.ListIndex + 1
   Else
      If Calendario.xAño.ListIndex < Calendario.xAño.ListCount - 1 Then
         Calendario.xMes.ListIndex = 0
         Calendario.xAño.ListIndex = Calendario.xAño.ListIndex + 1
      End If
   End If
End If

If Val(Mid(MiLabel.Name, 2)) = 5 Then
   If Calendario.xAño.ListIndex > 0 Then
      Calendario.xAño.ListIndex = Calendario.xAño.ListIndex - 1
   End If
End If

If Val(Mid(MiLabel.Name, 2)) = 6 Then
   If Calendario.xAño.ListIndex < Calendario.xAño.ListCount - 1 Then
      Calendario.xAño.ListIndex = Calendario.xAño.ListIndex + 1
   End If
End If

If Val(Mid(MiLabel.Name, 2)) = 7 Then Unload Calendario

If Val(Mid(MiLabel.Name, 2)) = 2 Or _
   Val(Mid(MiLabel.Name, 2)) = 4 Then
   Beep
End If
   
If Val(Mid(MiLabel.Name, 2)) < 8 Then Exit Sub

ActiveCell = CDate(MiLabel.Tag)
ActiveCell.Offset(0, 1).Select
End Sub

Private Sub MiLabel_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Unload Calendario
End Sub

Private Sub MiLabel_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
MiLabel.BorderStyle = fmBorderStyleNone
End Sub

Private Sub MiLabel_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
For x = 8 To 49
   Calendario.Controls("@" & x).BorderColor = vbWhite
   If IsNumeric(Calendario.Controls("@" & x).Caption) = True Then
      If CDate(Calendario.Controls("@" & x).Tag) = Date Then
         Calendario.Controls("@" & x).BorderColor = &H808080
      End If
   End If
Next
If IsNumeric(MiLabel.Caption) = True Then MiLabel.BorderColor = &HC0C0C0
End Sub

Private Sub MiLabel_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
MiLabel.BorderStyle = fmBorderStyleSingle

End Sub
  1. Capturas de pantalla: Puedes ampliar las imágenes haciendo clic sobre cada una de ellas.

Si quieres conocer otros artículos parecidos a Calendario automático desde cualquier celda en excel puedes visitar la categoría Aplicativos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Abrir chat
¿Necesitas información?
Hola 👋
¿En qué podemos ayudarte?