Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 查找给定日期范围内的工作日/周末数_Ms Access_Vba_Date - Fatal编程技术网

Ms access 查找给定日期范围内的工作日/周末数

Ms access 查找给定日期范围内的工作日/周末数,ms-access,vba,date,Ms Access,Vba,Date,我试图找到一些VBA代码,以使用Access VBA确定给定日期范围内的周天数和周末天数 例如: Begin Date - 1/1/2012 End Date - 1/31/2012 结果应该是: Week days - 22 Weekend days - 9 有人能帮忙吗?这两个函数将计算工作日和周末的天数: Function NumWeekendDays(dBegin As Date, dEnd As Date) As Long Dim iPartial As Integer

我试图找到一些VBA代码,以使用Access VBA确定给定日期范围内的周天数和周末天数

例如:

Begin Date - 1/1/2012
End Date - 1/31/2012
结果应该是:

Week days - 22
Weekend days - 9

有人能帮忙吗?

这两个函数将计算工作日和周末的天数:

Function NumWeekendDays(dBegin As Date, dEnd As Date) As Long
    Dim iPartial As Integer
    Dim lBeginDay As Long
    Dim lNumWeekendDays As Long

    iPartial = DateDiff("d", dBegin, dEnd + 1) Mod 7
    lBeginDay = 6 - DatePart("w", dBegin, vbMonday)

    lNumWeekendDays = (DateDiff("d", dBegin, dEnd + 1) \ 7) * 2
    If iPartial > 0 And lBeginDay - iPartial < 0 Then
        If lBeginDay = -1 Then
            lNumWeekendDays = lNumWeekendDays + 1
        ElseIf iPartial - lBeginDay = 1 Then
            lNumWeekendDays = lNumWeekendDays + 1
        Else
            lNumWeekendDays = lNumWeekendDays + 2
        End If
    End If

    NumWeekendDays = lNumWeekendDays

End Function

Function NumWeekDays(dBegin As Date, dEnd As Date) As Long
    NumWeekDays = DateDiff("d", dBegin, dEnd + 1) - NumWeekendDays(dBegin, dEnd)
End Function
函数NumWeekendDays(dBegin As Date,dEnd As Date)的长度
Dim iPartial作为整数
黯淡的日子和漫长的日子一样长
昏暗的周末和白天一样长
iPartial=DateDiff(“d”,dBegin,dEnd+1)模式7
lBeginDay=6-DatePart(“w”,dBegin,vbMonday)
lNumWeekendDays=(日期差(“d”,dBegin,dEnd+1)\7)*2
如果iPartial>0且lBeginDay-iPartial<0,则
如果lBeginDay=-1,则
lNumWeekendDays=lNumWeekendDays+1
ElseIf iPartial-lBeginDay=1则
lNumWeekendDays=lNumWeekendDays+1
其他的
lNumWeekendDays=lNumWeekendDays+2
如果结束
如果结束
NumWeekendDays=lNumWeekendDays
端函数
函数NumWeekDays(dBegin As Date,dEnd As Date)的长度为
NumWeekDays=DateDiff(“d”,dBegin,dEnd+1)-NumWeekendDays(dBegin,dEnd)
端函数

注意:我发现通过计算
lBeginDay
变量来计算部分周周末最简单,因此如果开始日期是星期一,
lBeginDay==5
。。。如果开始日期是星期五,
lBeginDay==1
,等等。其他变体也应适用。

您可以使用NETWORKDAYS功能吗?伪代码:通过两个日期的Datediff的TotalDays在两个日期上运行NETWORKDAYS函数,从周末的TotalDays减去工作日。NETWORKDAYS函数是一个有价值的Excel工作表函数,但在VBA中不存在。此示例代码中存在错误。如果结束日期是星期五,则返回2。如果iBeST>0和LGBeDay-IpRead 0和LGBEDYAI-IOPTION<0,那么“BAT”BRAD-我修复了BUG。谢谢!