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

    Xuân Thanh > 01-07-12, 11:58 AM

    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
  • RE: Hàm Work_Days để tính thời gian làm việc giữa BegDate và EndDate

    hoaiitktv > 20-03-13, 11:37 AM

    (01-07-12, 11:58 AM)Xuân Thanh Đã viết:
    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

    Nho Bac cho vi du cu the di nao?