Calendario automático desde cualquier celda en excel
Registra fechas con mayor precisión y rapidez en cualquier celda de Excel, sin necesidad de ingresarlas manualmente.
- 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.
- 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.
- Descarga de archivo
Haz clic en el siguiente botón para descargar gratis la macro calendario automático desde cualquier celda en excel.
- ¿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
- 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