Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Calendario en Excel con VBA

| 1 comentario

Un calendario es una cuenta sistematizada del transcurso del tiempo, utilizado para la organización cronológica de las actividades humanas.

El funcionamiento de este calendario es sencillo, pregunta a través de un INPUTBOX la fecha desde donde queremos que comience el calendario, y tras todo el proceso de cálculo, traslada a la Hoja de Excel, a partir de la celda B4, la cabecera de mes y día de la semana, y los días del mes correspondientes.

Pasos a seguir para crear un calendario en Excel con VBA.

En la hoja de cálculo de Excel, se insertan los comandos de los controlex activex, como se muestran en la siguiente imagen.

1 300x137 Calendario en Excel con VBA

(Para mayor visualización de la imagen, hacer click en la misma)

En el botón de “GENERAR CALENDARIO”, se programa el siguiente código, que nos permitirá generar un calendario anual.

Private Sub CommandButton1_Click()

Dim i As Integer

Dim fecha As Date

Dim aumento As Integer

Dim s As Integer

Dim contador

Range("B4").Select

Application.ScreenUpdating = False

s = 1

fecha1 = CDate(InputBox("INGRESE FECHA, CON EL FORMATO dd/mm/aaaa, Ejemplo: 01/01/2013 "))

contador = 0

For aumento = 0 To 11

contador = contador + 1

fecha2 = DateSerial(Year(fecha1), Month(fecha1) + aumento, Day(fecha1))

fecha = DateSerial(Year(fecha2), Month(fecha2), Day(fecha2))

año = Year(fecha)

mes = Month(fecha)

inicio = Weekday(DateSerial(año, mes, 1), vbSunday)

fin = Day(DateSerial(año, mes + 1, 1) - 1)

j = 1

p = inicio

For x = 1 To fin

ActiveCell.Offset(j - 1, p - 1) = x

ActiveCell.Offset(-2, 0).Value = DateSerial(año, mes, 1)

ActiveCell.Offset(-2, 0).NumberFormat = "mmmm-yyyy"

ActiveCell.Offset(-2, 0).Interior.ColorIndex = Int(Rnd * 55) + 1

ActiveCell.Offset(-1, 0).Value = "Do"

ActiveCell.Offset(-1, 1).Value = "Lu"

ActiveCell.Offset(-1, 2).Value = "Ma"

ActiveCell.Offset(-1, 3).Value = "Mi"

ActiveCell.Offset(-1, 4).Value = "Ju"

ActiveCell.Offset(-1, 5).Value = "Vi"

ActiveCell.Offset(-1, 6).Value = "Sá"

If p = 7 Then

p = 0

j = j + 1

End If

p = p + 1

Next

ActiveCell.Offset(0, 9).Select

If contador = 3 Or contador = 6 Or contador = 9 Or contador = 12 Then

ActiveCell.Offset(9, -27).Select

End If

Next

Application.ScreenUpdating = True

End Sub

Al hacer click izquierdo en el Boton mencionado nos muestra una venta en el que digitaremos la fecha con el siguiente formato dd/mm/aaaa y luego pulsamos en aceptar para que nos genere el calendario.

2 300x181 Calendario en Excel con VBA

(Para mayor visualización de la imagen, hacer click en la misma)

El botón “Borrar Todo” : sirve para limpiar la hoja de cálculo y poder generar un nuevo calendario. En este botón se programa lo siguiente.

Private Sub CommandButton2_Click()
Cells.Select
Selection.ClearContents
Range("A1").Select
End Sub

El botón “CAMBIAR FUENTE” : nos permite cambiar el tipo de letra y el color del calendario. En este botón se programa lo siguiente.

Private Sub CommandButton3_Click()
Range("b2:z35").Select
With Selection.Font
.Name = "Forte"
.FontStyle = "Italic"
.Size = 14
.ColorIndex = 54
End With
End Sub

El botón “MARCAR - DOMINGOS” : nos permite marcar los domingos con el color característico que lo representa en los calendarios que es el color rojo. En este botón se programa lo siguiente.

Private Sub CommandButton4_Click()
Range("b4:b8").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("b13:b17").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("b22:b26").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("b31:b35").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("k4:k8").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("k13:k17").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("k22:k26").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("k31:k35").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("t4:t8").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("t13:t17").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("t22:t26").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("t31:t35").Select
Selection.Font.Bold = True
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("A1").Select
End Sub.

3 300x158 Calendario en Excel con VBA

(Para mayor visualización de la imagen, hacer click en la misma)

Elaborado por: Ricardo Najarro Chuchón

Descargar Calendario

Un comentario

  1. Buenas tardes:

    Este calendario es muy bueno y práctico, lo que si me gustaría es personalizarlo a un grupo determinado de personas de una empresa , es decir que por cada persona me genere un calendario y tener así un control y una programación de vacaciones durante el resto del año y el próximo.

    Muchas gracias!

Deja una respuesta

Los campos requeridos estan marcados con *.