日期调整为截止后的下一个工作日 vba

日期调整为截止后的下一个工作日 vba

我有一个问题,我正在尝试创建一个已截止时间的宏。

例如:在工作表上,如果请求者记录了他们的请求,则会自动显示当前日期,但是如果请求者在截止时间之后记录了他的/她的请求,则日期将在下一个工作日(即周一至周五)进行调整,假设我的截止时间是下午 4 点

如果请求者在截止时间之后提交请求,(比如说,星期五,下午 4:01)日期将显示下一个工作日,即星期一。

工作日相当于:星期一到星期五 截止时间为下午4点

这在 VBA 宏上可能吗?

谢谢!

答案1

通过 VBA 宏几乎一切皆有可能。

因此,首先我们需要确定我们是否应该获取今天的日期,还是第二天的日期。
上午/下午让我有点头疼,所以可能有更好的方法来实现这一点。
本质上,如果过了下午 4 点,我们需要转到下一个日期。然后我们必须确保我们不会落在周末,如果落在周末,则找出下一个星期一是什么时候。

您可以尝试这样的事情:

Sub aTime()
Dim cTime As Variant, amPm As Variant, wkDay As Long, d As Date, printA As Range, printB As Range
Set printA = Range("A1")                                                'Where to display weekday
Set printB = Range("A2")                                                'Where to display date
d = Date                                                            'Store date
wkDay = Weekday(Now, vbMonday)                                      'Store weekday, assuming monday as start of week
cTime = Format(TimeValue(Now), "hh:mm:ss AM/PM")                    'Store time
amPm = Format(TimeValue(Now), "AM/PM")                              'AM/PM stuff

If cTime > "03:59:59" And cTime < "12:00:00" And amPm = "PM" Then   'Are we too late for today?
    wkDay = wkDay + 1                                               'Yes, go to next weekday
    d = DateAdd("d", 1, Date)                                       'Add one day to date too
End If

If wkDay > 5 Then                                                   'Are we past friday?
    printA.Value = WeekdayName(1)                                   'Yes, set weekday to Monday and print
    printB.Value = Date + 8 - Weekday(Date, vbMonday)               'Find date of next monday and print
Else
    printA.Value = WeekdayName(wkDay)                               'No, Print stored weekday
    printB.Value = d                                                'also print stored date
End If

End Sub

相关内容