Функція визначення кількості робочих днів

Аргументи: dtDate1 – Початкова дата, dtDate2 – Кінцева дата, bUseHolidays True – Використовувати таблицю свят False – Не використовувати таблицю свят
Призначення: Розрахунок кількості робочих днів випадають на заданий часовий інтервал
Повертає: Кількість робочих днів.

Public Function WorkDays(ByVal dtDate1 As Date, ByVal dtDate2 As Variant, Optional ByVal bUseHolidays As Variant) As Long
Dim l As Long, wd1 As Integer, wd2 As Integer
Dim wd As Long

If IsMissing(bUseHolidays) Then
    bUseHolidays = False
End If
l = DateDiff(“d”, dtDate1, dtDate2, vbMonday)
wd1 = WeekDay(dtDate1, vbMonday)
wd2 = WeekDay(dtDate2, vbMonday)
wd = l – ((l + wd1 + (7 – wd2)) / 7&) * 2& + 1&
If wd1 = 7 Then
    wd = wd + 1
End If
If wd2 <= 5 Then
    wd = wd + 2
ElseIf wd2 = 6 Then
    wd = wd + 1
End If
If bUseHolidays Then
    wd = wd – DCount(“*”, “tblHolidays”, “[Holiday] Between #” & _
    Format(dtDate1, “yyyy mm dd”) & “# And #” & _
    Format(dtDate2, “yyyy mm dd”) & “#”)
End If
WorkDays = wd
End Function

Примітки:
Субота і неділя вважаються неробочими днями.
Таблиця свят в даному прикладі називається “tblHolidays” і містить одне поле “Holiday” типу Date / Time. У цю таблицю заносяться дати свят які не потрапляють на суботу і неділю.
Автор: з довідника ProgramAdvices

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*