Dưới đây mình xin giới thiệu đoạn code tính ngày làm việc thực tế. Trừ thứ 7 và chủ nhật. Mời các bạn tham khảo.
Function CalcWorkdays(StartDate, EndDate) As Integer
Dim LTotalDays As Integer
Dim LSaturdays As Integer
Dim LSundays As Integer
On Error GoTo Err_Execute
CalcWorkdays = 0
If IsDate(StartDate) And IsDate(EndDate) Then
If EndDate <= StartDate Then
CalcWorkdays = 0
Else
LTotalDays = DateDiff("d", StartDate - 1, EndDate)
LSaturdays = DateDiff("ww", StartDate - 1, EndDate, 7)
LSundays = DateDiff("ww", StartDate - 1, EndDate, 1)
'Workdays is the elapsed days excluding Saturdays and Sundays
CalcWorkdays = LTotalDays - LSaturdays - LSundays
End If
End If
Exit Function
Err_Execute:
'If error occurs, return 0
CalcWorkdays = 0
End Function
Chú ý:Dim LTotalDays As Integer
Dim LSaturdays As Integer
Dim LSundays As Integer
On Error GoTo Err_Execute
CalcWorkdays = 0
If IsDate(StartDate) And IsDate(EndDate) Then
If EndDate <= StartDate Then
CalcWorkdays = 0
Else
LTotalDays = DateDiff("d", StartDate - 1, EndDate)
LSaturdays = DateDiff("ww", StartDate - 1, EndDate, 7)
LSundays = DateDiff("ww", StartDate - 1, EndDate, 1)
'Workdays is the elapsed days excluding Saturdays and Sundays
CalcWorkdays = LTotalDays - LSaturdays - LSundays
End If
End If
Exit Function
Err_Execute:
'If error occurs, return 0
CalcWorkdays = 0
End Function
1/Nếu chúng ta làm luôn thứ bảy thì thay thế:
CalcWorkdays = LTotalDays - LSaturdays - LSundays
Thành:CalcWorkdays = LTotalDays -LSundays
2/ Phạm vi hàm này không bao gồm ngày lễ. Lẽ ra mình có thể thiết kế tính luôn ngày lễ nếu như chúng ta không có nghỉ tết âm lịch và giỗ tổ Hùng Vương. Mình sẽ bổ sung nếu tìm thấy module chuyển ngày dương thành âm lịch!Thân mến!
____________________________________________________________________________________
Thảo luận thêm và down demo tại: http://thuthuataccess.com/forum/thread-126.html
Bổ sung Demo:
Trả lờiXóahttps://sites.google.com/site/thuvienthuthuat/home/tinhngaylamviec.rar?attredirects=0&d=1