Cálculos de días hábiles a partir de una fecha

¿Tengo una fecha y quiero agregar 5 días hábiles como lo hago? Por ejemplo tengo fecha del 17 de febrero y le tengo que agregar 5 días hábiles.

2 respuestas

Respuesta
2

¿Para qué sirve calcular semanas? Si tengo el formulario

Escribo 5 y pulso Enter

 

En la ventana del editor de Vb pega esta función

Public Function SumaD(fecha As Date, Días) As Date
Dim i As Long, TempFecha As Date
TempFecha = fecha
For i = 1 To Días
TempFecha = TempFecha + 1
If Weekday(TempFecha, vbMonday) = 7 Or Weekday(TempFecha, vbMonday) = 6 Then
i = i - 1
End If
Next i
SumaD = TempFecha
End Function

Y en el evento Al recibir el enfoque del cuadro de texto FechaF ponle

Private Sub FechaF_GotFocus()
FechaF = SumaD([FechaA], [Dias])
End Sub

Y aún lo puedes hacer más sencillo.

Respuesta
1

¿Cómo quiere el cálculo, sin día sábado? ¿Sin días festivos?.

Sin día sábado. por favor. gracias

Adicione estas funciones en un módulo:

Public Function DiasEntreFechas(FechaDesde As Date, _
FechaHasta As Date, _
Optional FechaIncluida As Boolean = True)
'Función calcula los dias entre fechas SIN Sábados y Domingos
'requiere de la función NroSemanasEntreFechas
DiasEntreFechas = DateDiff("d", FechaDesde, FechaHasta) - _
FechaIncluida - _
NroSemanasEntreFechas(FechaDesde, FechaHasta, vbSunday) - _
NroSemanasEntreFechas(FechaDesde, FechaHasta, vbSaturday)
End Function

Public Function NroSemanasEntreFechas(FechaInicial As Date, _
FechaFinal As Date, _
WD As Long)
'Función para obtener las semanas entre 2 fechas de acuerdo con el día
'Parámetros:
' FechaInicial --- La fecha menor
' FechaFinal ----- La fecha mayor
' WD ----- Número del día de la semana (1=dom 2=lunes etc)

NroSemanasEntreFechas = DateDiff("ww", FechaInicial, FechaFinal, WD) _
- Int(WD = Weekday(FechaInicial))
End Function

Ejemplos de llamada: (En la ventana de inmediato)

?DiasEntreFechas("01/02/2021","20/02/2021")
15

Si quiere que cuente a partir del siguiente día, llame la función así:

?DiasEntreFechas("01/02/2021","20/02/2021",False)
14

¡Gracias! 

Tenga cuidado con la función que le dan NO sirve, falla en años bisiestos, pruebe con esto:

?SumaD("25/02/2020",5)   Retorna 

3/03/2020 día martes y  lo correcto es

2/03/2020 Lunes

En conclusión ni tan sencillo.

¡Gracias! 

Tengo una Agenda/Calendario  aplicable a 21 países que elaboré hace bastante tiempo en VB6.0 pero aún trabaja en Windows 7,8 y 10. Le adjunto algunas imágenes:

PANTALLA PRINCIPAL

Si quiere instalarlo en su PC puede solicitarlo a [email protected], favor hacer referencia a su consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas