ADDING 15 working days, not sure

User avatar
sal21
PlatinumLounger
Posts: 4364
Joined: 26 Apr 2010, 17:36

ADDING 15 working days, not sure

Post by sal21 »

I have this old function to add a working days....is really correct? :scratch:

Code: Select all

Option Explicit
Public Function WorkingDays(NumDays As Long, StartDate As Date) As Date
  
  Dim Counter As Long
  Dim ReturnDate As Date

  Counter = NumDays
  ReturnDate = StartDate
    Do While Counter > 0
    ReturnDate = DateAdd("D", 1, ReturnDate)
    If Weekday(ReturnDate) >= 2 And Weekday(ReturnDate) <= 6 Then
      Counter = Counter - 1
    End If
    Loop
 
  WorkingDays = Format$(ReturnDate, "DD/MM/YYYY")
  
End Function
Sub UNO()

Dim StartDate As Date, NumDays As Long, DATA_5 As Date

NumDays = 5
StartDate = CDate(Now)
DATA_5 = WorkingDays(NumDays, StartDate)

End Sub

User avatar
HansV
Administrator
Posts: 78549
Joined: 16 Jan 2010, 00:14
Status: Microsoft MVP
Location: Wageningen, The Netherlands

Re: ADDING 15 working days, not sure

Post by HansV »

The function is correct, but it can be simplified slightly:

Code: Select all

Public Function WorkingDays(NumDays As Long, StartDate As Date) As Date
    Dim Counter As Long
    Dim ReturnDate As Date
    Counter = NumDays
    ReturnDate = StartDate
    Do While Counter > 0
        ReturnDate = ReturnDate + 1
        If Weekday(ReturnDate) >= 2 And Weekday(ReturnDate) <= 6 Then
            Counter = Counter - 1
        End If
    Loop
    WorkingDays = ReturnDate
End Function
For example, to add 15 working days to today's date, you can use WorkingDays(15, Date)
Best wishes,
Hans