Public Function DateDiff5(Fecha1 As Date, Fecha2 As Date) As Long
Dim Dif As Long
If Fecha1 >= Fecha2 Then
DateDiff5 = 0
Else
'Calculamos el nº de semanas entre las dos fechas y multiplicamos por 5
Dif = DateDiff("w", Fecha1, Fecha2, vbMonday, vbFirstJan1) * 5
'Si la fecha inferior tiene mayor día de la semana le sumamos:
If Weekday(Fecha1, vbMonday) > Weekday(Fecha2, vbMonday) Then
'A) Los días que le quedan a hasta el viernes
If Weekday(Fecha1, vbMonday) < 5 Then
Dif = Dif + 5 - Weekday(Fecha1, vbMonday)
End If
'Lógicamente si es sábado o domingo no sumamos nada
'B) Los días que hay desde el lunes hasta la fecha mayor teniendo
'en cuenta que:
'o) Si la fecha mayor es anterior a sábado
If Weekday(Fecha2, vbMonday) < 6 Then
'los días que hay desde el lunes hasta ella
Dif = Dif + Weekday(Fecha2, vbMonday)
'o) Si la fecha es sábado o domingo
Else
'5, es decir hasta el viernes'
Dif = Dif + 5
End If
Else
'Si la fecha inferior tiene mayor día de la semana sumamos:
' o) Si ésta es sábado o domingo
If Weekday(Fecha2, vbMonday) > 5 Then
'los días que hay desde ella hasta el viernes
Dif = Dif + 5 - Weekday(Fecha1, vbMonday)
' o) Si es de lunes a viernes
Else
'los días que hay entre las dos
Dif = Dif + Weekday(Fecha2, vbMonday) - Weekday(Fecha1, vbMonday)
End If
End If
DateDiff5 = Dif
End If
End Function