NetWorkDays Function - Microsoft Community
- Get link
 - X
 - Other Apps
 
hi all,
i trying write function returns number of workdays between today , due date job.
this have far:
function workdays(due  as date)
      dim a integer
      workdays = 0: = 0
      until date + > due
          if weekday(date + a, vbmonday) < 6 then  workdays = workdays + 1
          a = + 1
      loop
  end function
this works, discounting saturdays , sundays, can't discount holidays.
i have holiday dates (for next 20 years) listed in table. want this:
function workdays(due  as date)
      dim a integer
      workdays = 0: = 0
      until date + > due
          if weekday(date + a, vbmonday) < 6 and date + not occur in holiday dates  table  then workdays = workdays + 1
          a = + 1
      loop
  end function
i'm happy loop through dates in holiday dates table, testing each one, have no idea how syntax in access. possible?
(yes, syntax can verb... think)
regards - dave.
here function use; written arvin meyer:
public function workingdays(startdate date, enddate date) long
      '....................................................................
      ' name: workingdays
      ' inputs: startdate date
      ' enddate date
      ' returns: long
      ' author: arvin meyer
      ' date: may 5,2002
      ' modified slightly
      ' comment: accepts 2 dates , returns number of weekdays between them
      ' note function has been modified account holidays.
      ' requires table named tblholidays field named holidaydate.
      '....................................................................
    dim lngcount long
      dim dtmcurr date
      dim rst dao.recordset
      dim dbs dao.database
on error goto exithandler
    set dbs = currentdb
      set rst = dbs.openrecordset("tblholidays", dbopensnapshot)
    ' use following line include startdate
      ' dtmcurr = startdate
      ' use following line exclude startdate
      dtmcurr = startdate + 1
lngcount = 0
    while dtmcurr <= enddate
          if weekday(dtmcurr, vbmonday) < 6 then
              rst.findfirst "[holidaydate] = #" & format(dtmcurr, "mm/dd/yyyy") & "#"
              if rst.nomatch then
                  lngcount = lngcount + 1
              end if
          end if
          dtmcurr = dtmcurr + 1
      loop
workingdays = lngcount
exithandler:
      on error resume next
      rst.close
      set rst = nothing
      set dbs = nothing
  end function
use workingdays(date(), due) number of workdays today due date.
                Office                /                        Access                    /                        Windows 10                    /                        Office 365 for business                
 
  
- Get link
 - X
 - Other Apps
 
Comments
Post a Comment