Para poder hacerlo necesitas 2 cosas, la primera una tabla con todos los días festivos que quieras incluir (Fiestas), y la segunda, una función que compruebe las fechas y vaya agregando días hasta el siguiente hábil.
La tabla podría contener los siguientes campos:
. Fecha Descripción
Por ejemplo, podría quedar así:
. Fecha Descripción
25/12/13 Navidad
01/01/14 Año Nuevo
06/01/14 Día de Reyes.
...
...
...
Introduces las siguientes funciones en un módulo y luego haces la llamada a la funciónSiguienteHabil pasando el valor de fecha_final como parámetro.
Public Function SiguienteHabil(Dia As Date) As Date
Dim DiaTemp As Date
Dim DiaSemana As Integer
Dim Sigue As Boolean
DiaTemp = Dia
Do
DiaTemp = DiaTemp + 1
Sigue = False
DiaSemana = DatePart("w", DiaTemp, vbMonday)
Select Case DiaSemana
Case 6, 7
Sigue = True
Case 1 To 5
If EsFestivo(DiaTemp) Then
Sigue = True
End If
End Select
Loop While Sigue
SiguienteHabil = DiaTemp
End Function
Public Function EsFestivo(ByVal Dia As Date) As Boolean
Dim strFecha As String
Dim varPrueba As Variant
strFecha = "#" & Format(Dia, "mm/dd/yyyy") & "#"
varPrueba = DLookup("Fecha", "Fiestas", "[Fecha] =" & strFecha)
EsFestivo = Not IsNull(varPrueba)
End Function
Puedes probar con el valor "03/01/14" (es un viernes antes del día de Reyes) el valor que te devuelve es 07/01/14, que es martes ya que el día 6 es festivo.
Estoy seguro de que te va a servir, espero que lo puntúes con un 5.