Tìm thủ thuật nhanh hơn với chức năng tìm trong Blog

7/18/12

Hàm Work_Days để tính thời gian làm việc giữa BegDate và EndDate

Thủ Thuật Access xin giới thiệu một hàm tự viết của tác giả Xuân Thanh phục vụ cho việc tính ngày làm việc thực tế, mời các bạn tham khảo

 
Tác Giả: Xuân Thanh
Trang: http://thuthuataccess.com

Mã:
Function Work_Days(BegDate As Variant, EndDate As Variant) As Long

  Dim WholeWeeks As Variant
  Dim DateCnt As Variant
  Dim EndDays As Integer
    
  On Error GoTo Err_Work_Days

  BegDate = DateValue(BegDate)
  EndDate = DateValue(EndDate)
  WholeWeeks = DateDiff("w", BegDate, EndDate)
  DateCnt = DateAdd("ww", WholeWeeks, BegDate)
  EndDays = 0

  Do While DateCnt <= EndDate
     If Format(DateCnt, "ddd") <> "Sun" And _
       Format(DateCnt, "ddd") <> "Sat" Then
        EndDays = EndDays + 1
     End If
           DateCnt = DateAdd("d", 1, DateCnt)
  Loop

  Work_Days = WholeWeeks * 5 + EndDays

Exit Function

Err_Work_Days:

  If Err.Number = 94 Then
     Work_Days = 0
        Exit Function
  Else
     MsgBox "Error " & Err.Number & ": " & Err.Description
  End If

End Function

P/S : hàm tính cho một tuần làm việc 5 ngày, trừ thứ 7 và chủ nhật. Các bạn tự chế lại theo yêu cầu sử dụng
Thân mến