Nos encontramos con la necesidad de calcular el número de viernes que hay entre dos fechas.
Pedimos la Fecha inicial
Pedimos la Fecha final
Debe devolver un mensaje con el resultado
Con una sencilla macro podemos calcularlo, a continuación revisamos el código paso a paso, recuerda que los comentarios al código comienzan por ‘ y aparecen en color verde.
————————————————————————————————————————————————————–
‘En un primer paso forzamos a la declaración de variables
Option Explicit
Sub viernes()
‘Definición de variables a utilizar en el ejemplo
Dim Vdayinit As Date ‘Fecha de inicio
Dim Vdayend As Date ‘Fecha de fin
Dim Vdayinitmsg As Date ‘Variable creada para el Msgbox porque Vdayinit va incrementando un día en el Loop
Dim Vdifday As Integer ‘Diferencia de días entre fecha inicio y fecha fin
Dim Vdayweek As Integer ‘Día de la semana de obtenido con la función
Dim Vconta As Integer ‘Variable contador para ir sumando los días que son viernes
Dim i As Integer ‘Variable para el Loop for .. I
On Error GoTo Controlerror ‘En caso de error al escribir los datos ir a Controlerror y salir de la macro
‘Pedimos con un InputoBox que el usuario escriba las fechas de Inicio y Fin y las almacenamos en las variables declaradas
Vdayinit = InputBox(«Escribe fecha en formato dd/mm/aa», «FECHA INICIO»)
Vdayinitmsg = Vdayinit ‘Almacenamos la fecha inicial que usaremos en el mensaje del final
Vdayend = InputBox(«Escribe fecha en formato dd/mm/aa», «FECHA FIN»)
‘Calculamos los días entre la dos fechas para repetir el Loop tantas veces como días haya entre ellas.
Vdifday = Vdayend – Vdayinit
‘Ahora hacemos un Loop si ponemos por ejemplo 01/01/2015 y 31/01/2015 habran transcurrido 30 días , luego el Loop se repetirá 30 veces
For i = 1 To Vdifday
‘Averiguamos el día de cada fecha con la función Weekday
Vdayweek = Weekday(Vdayinit, vbMonday)
‘Si el día es = 6 (viernes) sexto día de la semana, contamos 1, al estar dentro del Loop en cada vuelta evaluará la nueva fecha e irá sumando
If Vdayweek = 6 Then
Vconta = Vconta + 1
End If
‘Una vez evaluado añadimos un día más en la siguiente vuelta, que vuelve a comprobar si es viernes y lo añade a Vconta
Vdayinit = Vdayinit + 1
Next
‘Cuando el Loop ha finalizado las vueltas, ya tenemos la variable Vconta con los días que son viernes
‘Ahora sólo tenemos que crear un mensaje MsgBox con la información obtenida, el texto va entre comillas, Chr(13) para añadir un salto de línea, y las variables con la información del mensaje que necesitamos.
MsgBox «El número de viernes entre las las fechas :» & Chr(13) & Vdayinitmsg & » y » & Vdayend & Chr(13) & «es de » & Vconta
Controlerror: Exit Sub
End Sub
————————————————————————————————————————————————————-
Puedes copiar en el editor de Excel el código para comprobar el funcionamiento de la macro, recuerda que una buena forma de comprobarlo es ejecutando el código paso a paso, puedes repasar cómo hacerlo en el Post anterior : https://exceltrucos.com/2015/03/23/depurar-codigo-vba-en-excel-ejecutar-una-macro-paso-a-paso/
Deja una respuesta