Как поставить условное внутри другого условного |Доступ к VBA - PullRequest
1 голос
/ 20 октября 2019

Как добавить еще одно условие к следующему условному выражению:

Private Sub Form_Timer()

Me.myTime = Now()
Me.dayText = Now()

    If TimeValue(Now()) = #3:00:00 PM# Then
        Call Button1_Click
        DoCmd.SetWarnings True
    End If
End Sub

Form_Timer() вызывает нажатие кнопки Button1, когда в текстовом поле myTime время 15:00.

Но у меня также есть текстовое поле с именем dayText, в котором отображается текущий день недели.

Я бы хотел, чтобы Button1 запускался, только если день не суббота или воскресенье, авремя 15:00.

Итак, я собираюсь сделать что-то вроде этого:

If Me.dayText = #Saturday# or #Sunday# Then

    If TimeValue(Now()) = #3:00:00 PM# Then
    Call Button1_Click
    DoCmd.SetWarnings True

End If

End If

2 текстовых поля выглядят так:

enter image description here

Ответы [ 3 ]

1 голос
/ 20 октября 2019

Мне бы хотелось, чтобы Button1 срабатывал только в том случае, если день не суббота или воскресенье, а время 15:00.

Этот код можно записать так:

If Weekday(Date, vbMonday) < 6 Then
    ' Weekend day.
    If DateDiff("s", Time, #3:00:00 PM#) = 0 Then
        Call Button1_Click
        DoCmd.SetWarnings True
    End If
End If
1 голос
/ 20 октября 2019

Если ваше текстовое поле dayText отформатировано (значит, имеет значение даты), тогда вы можете использовать следующее.

If Format(Me.dayText, "dddd") = "Saturday" Or Format(Me.dayText, "dddd") = "Sunday" Then
    If TimeValue(Now()) = #3:00:00 PM# Then
        Call Button1_Click
        DoCmd.SetWarnings True
    End If
End If
0 голосов
/ 20 октября 2019

Для чего бы то ни было, нет необходимости использовать вложенный условный оператор в этом конкретном сценарии, поскольку ветвь else одинакова независимо от того, проверяется ли какое-либо из тестовых выражений.

Как таковой, оператора and между двумя тестовыми выражениями должно быть достаточно, например:

If Weekday(Date, vbMonday) < 6 And Abs(DateDiff("s", Time, #3:00:00 PM#)) < 3 Then
    Call Button1_Click
    DoCmd.SetWarnings True
End If

В приведенном выше примере используется допуск в 3 секунды по обе стороны от 15:00:00 - его следует отрегулировать в зависимостина частоте тика вашего таймера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...