인터넷에서이 기능을 받았습니다. 지금까지 일을 계산할 때 잘 지내고 있지만 날짜가 다른 해가되면 결과가 잘못됩니다. 예 : 그것은 육일 있어야 할 때DateDiff 잘못된 결과 결과
dateFrom = "2017-12-26"
dateTo = "2018-01-02"
결과는 28 일입니다 것입니다.
Public Function NetWorkdays(dtStartDate, dtEndDate, arrHolidays)
Dim lngDays
Dim lngSaturdays
Dim lngSundays
Dim lngHolidays
Dim lngAdjustment
Dim dtTest
Dim i, x
lngDays = DateDiff("d", dtStartDate, dtEndDate)
lngSundays = DateDiff("ww", dtStartDate, dtEndDate, vbSunday)
lngSaturdays = DateDiff("w", IIf(Weekday(dtStartDate, vbSunday) = vbSaturday, dtStartDate, dtStartDate - Weekday(dtStartDate, vbSunday)), dtEndDate)
For x = LBound(arrHolidays) To UBound(arrHolidays)
For i = 0 To lngDays
dtTest = DateAdd("d", i, dtStartDate)
If arrHolidays(x) = dtTest And Weekday(dtTest) <> 1 And Weekday(dtTest) <> 7 Then
lngHolidays = lngHolidays + 1
End If
Next
Next
If Weekday(dtStartDate, vbSunday) = vbSunday Or Weekday(dtStartDate, vbSunday) = vbSaturday Then
lngAdjustment = 0
Else
lngAdjustment = 1
End If
NetWorkdays = lngDays - lngSundays - lngSaturdays - lngHolidays + lngAdjustment
End Function
Public Function IIf(expr, truepart, falsepart)
If expr Then IIf = truepart Else IIf = falsepart
End function
아무도 아무것도 수리 그것을 지적 할 수 : 여기
는 기능입니다? 프로토 타입 형태의 접두사에 의해 indiated으로
무엇을하고 있는지 이해하지 못한다면 사용하지 않을 것입니다. 인터넷에서 코드를 재사용하기 전에 그 코드가 무엇을하는지 분석하고 적절하게 조정합니다. – Lankymart