工作日"/>
计算工作日
VB、VBA中计算工作日(仅剔除星期六、日)的函数。
Function GetWorkdayCount(StartDay As Date, EndDay As Date) As Integer
Dim NumS As Integer, NumY As Integer
Dim WeekdayNumY(7, 6) As Integer
WeekdayNumY(1, 1) = 0
WeekdayNumY(1, 2) = 0
WeekdayNumY(1, 3) = 0
WeekdayNumY(1, 4) = 0
WeekdayNumY(1, 5) = 0
WeekdayNumY(1, 6) = 1
WeekdayNumY(2, 1) = 0
WeekdayNumY(2, 2) = 0
WeekdayNumY(2, 3) = 0
WeekdayNumY(2, 4) = 0
WeekdayNumY(2, 5) = 1
WeekdayNumY(2, 6) = 2
WeekdayNumY(3, 1) = 0
WeekdayNumY(3, 2) = 0
WeekdayNumY(3, 3) = 0
WeekdayNumY(3, 4) = 1
WeekdayNumY(3, 5) = 2
WeekdayNumY(3, 6) = 2
WeekdayNumY(4, 1) = 0
WeekdayNumY(4, 2) = 0
WeekdayNumY(4, 3) = 1
WeekdayNumY(4, 4) = 2
WeekdayNumY(4, 5) = 2
WeekdayNumY(4, 6) = 2
WeekdayNumY(5, 1) = 0
WeekdayNumY(5, 2) = 1
WeekdayNumY(5, 3) = 2
WeekdayNumY(5, 4) = 2
WeekdayNumY(5, 5) = 2
WeekdayNumY(5, 6) = 2
WeekdayNumY(6, 1) = 1
WeekdayNumY(6, 2) = 2
WeekdayNumY(6, 3) = 2
WeekdayNumY(6, 4) = 2
WeekdayNumY(6, 5) = 2
WeekdayNumY(6, 6) = 2
WeekdayNumY(7, 1) = 1
WeekdayNumY(7, 2) = 1
WeekdayNumY(7, 3) = 1
WeekdayNumY(7, 4) = 1
WeekdayNumY(7, 5) = 1
WeekdayNumY(7, 6) = 1
NumS = (EndDay - StartDay) \ 7
NumY = (EndDay - StartDay) Mod 7
If NumS = 0 And NumY = 0 ThenGetWorkdayCount = 0
ElseGetWorkdayCount = EndDay - StartDay - NumS * 2 - WeekdayNumY(Weekday(StartDay), NumY)
End If
End Function
参考:VB中定义数组的起始下标默认从0开始。用Option Base 1语句将数组默认起始下标设置为 1。如果没有定义option base的话,或者定义数组是没有指定1 to N的方式,默认就是0开始。详见这个链接
更多推荐
计算工作日
发布评论