none
calcular el dia siguiente habil a una fecha RRS feed

  • Pregunta

  • Buenos días grupo

    Necesito calcular en access 2007 la fecha del día hábil inmediatamente posterior a una fecha teniendo en cuenta sabados, domingos, y fiestas locales y nacionales (estas las tengo en una tabla) para incluirlo en un modulo de VBA.

    En excel existe la funcion dias.lab pero no he encontrado la equivalente en access 2007

    Gracias

    miércoles, 19 de febrero de 2014 11:00

Respuestas

  • Hola

    Imaginemos que tu tabla de festivos se llama "DiasFestivos". Mira a ver sí este código te sirve

    Public Function SiguienteDiaHabil(dFecha As Date) As Date
        Dim dIntermedio As Date, iCuenta As Integer
        dIntermedio = DateAdd("d", 1, dFecha)
        iCuenta = DCount("Anyo", "DiasFestivos", "Fecha=#" & Format(dIntermedio, "mm/dd/yyyy") & "#")
        If Weekday(dIntermedio, vbMonday) = 6 Or Weekday(dIntermedio, vbMonday) = 7 Then
            dIntermedio = SiguienteDiaHabil(dIntermedio)
        ElseIf iCuenta > 0 Then
            dIntermedio = SiguienteDiaHabil(dIntermedio)
        End If
        SiguienteDiaHabil = dIntermedio
    End Function

    Salu2,


    José Mª Fueyo [MS MVP Access]

    • Propuesto como respuesta José Mª Fueyo jueves, 20 de febrero de 2014 8:28
    • Marcado como respuesta rafa_c jueves, 20 de febrero de 2014 9:46
    miércoles, 19 de febrero de 2014 15:59

Todas las respuestas

  • Hola

    Imaginemos que tu tabla de festivos se llama "DiasFestivos". Mira a ver sí este código te sirve

    Public Function SiguienteDiaHabil(dFecha As Date) As Date
        Dim dIntermedio As Date, iCuenta As Integer
        dIntermedio = DateAdd("d", 1, dFecha)
        iCuenta = DCount("Anyo", "DiasFestivos", "Fecha=#" & Format(dIntermedio, "mm/dd/yyyy") & "#")
        If Weekday(dIntermedio, vbMonday) = 6 Or Weekday(dIntermedio, vbMonday) = 7 Then
            dIntermedio = SiguienteDiaHabil(dIntermedio)
        ElseIf iCuenta > 0 Then
            dIntermedio = SiguienteDiaHabil(dIntermedio)
        End If
        SiguienteDiaHabil = dIntermedio
    End Function

    Salu2,


    José Mª Fueyo [MS MVP Access]

    • Propuesto como respuesta José Mª Fueyo jueves, 20 de febrero de 2014 8:28
    • Marcado como respuesta rafa_c jueves, 20 de febrero de 2014 9:46
    miércoles, 19 de febrero de 2014 15:59
  • Hola Jose María!

    Muchas gracias por tu ayuda, es perfecto.

    Saludos

    .

    jueves, 20 de febrero de 2014 9:48
  • :-)

    Salu2,


    José Mª Fueyo [MS MVP Access]

    jueves, 20 de febrero de 2014 16:11
  • Ha pasado bastante tiempo, pero tengo una solución igual de efectiva pero calcula el siguiente día hábil de acuerdo con el tipo de fin de semana que quieras configurar.

    Esta es la URL: http://www.en-excel.com/siguiente-dia-habil-en-excel/

    Saludos.

    miércoles, 18 de julio de 2018 15:24