我需要在两次约会之间查一下周末的情况。
行数据:
29/11/2019 12:45:43 and 30/11/2019 12:45:43
我的代码:
Function Check_Weeknd(start_date As Date, end_date As Date) As Boolean
While start_date <> end_date
start_date = DateAdd("d", 1, start_date)
If Weekday(start_date) = 7 Then
Check_Weeknd = True
End If
Wend
End Function
发布于 2019-12-24 11:09:51
尝试:
Function Check_Weeknd(start_date As Date, end_date As Date) As Boolean
Dim D As Date
For D = Int(start_date) To Int(end_date)
If Weekday(D) = vbSaturday Or _
Weekday(D) = vbSunday Then
Check_Weeknd = True
Exit Function
End If
Next D
End Function
我添加了Int
函数来演示如何节省时间,但是在这个函数中没有必要,因为Weekday
只对日期部分进行操作。
也许,更好一点:没有Int
函数和第二个日期条目是可选的,所以如果需要的话,可以测试单个日期:
Function Check_Weeknd(start_date As Date, Optional end_date As Date) As Boolean
Dim D As Date
If end_date = 0 Then end_date = start_date
For D = start_date To end_date
If Weekday(D) = vbSaturday Or _
Weekday(D) = vbSunday Then
Check_Weeknd = True
Exit Function
End If
Next D
End Function
发布于 2019-12-24 10:02:44
您可以使用类似的方法来避免循环。
Function check_weekend(dtStart As Date, dtEnd As Date) As Boolean
check_weekend = DateDiff("d", dtStart, dtEnd) - _
WorksheetFunction.NetworkDays(dtStart, dtEnd) > 0
End Function
https://stackoverflow.com/questions/59466905
复制相似问题