У меня есть вопрос, я пытаюсь создать макрос, который сократил время.

например: на листе бумаги, если заявитель зарегистрировал свой запрос, автоматически отобразится текущая дата, однако, если заявитель зарегистрировал свой запрос после истечения времени отключения, дата будет скорректирована в следующие рабочие дни (то есть с понедельника до Пятница) скажем, мое время отключения будет в 4 часа дня

и если запрашивающий регистрирует свой запрос после отключения (скажем, в пятницу, 4:01 вечера), дата будет отображаться на следующий рабочий день, который является понедельником.

рабочие дни эквивалентны: с понедельника по пятницу отключение будет в 4 вечера

это возможно на VBA макрос ??

Спасибо!

1 ответ1

0

Почти все возможно с VBA Macro.

Итак, сначала мы должны определить, должны ли мы получить дату сегодня или на следующий день.
AM/PM вызывает у меня небольшую головную боль, так что, возможно, есть лучшие способы сделать это.
По сути, если уже прошло 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .