我在07:00 AM到04:00 PM之间设置TimeValue
时无法运行程序,或者在此时间之外运行不同的程序。
Option Explicit
Public Sub Example()
Dim FromStart As Date
Dim ToEnd As Date
FromStart = TimeValue("07:00:00 AM")
ToEnd = TimeValue("04:00:00 PM")
If Weekday(Now()) = vbMonday Or Weekday(Now()) = vbTuesday Or _
Weekday(Now()) = vbWednesday Or Weekday(Now()) = vbThursday Or _
Weekday(Now()) = vbFriday And _
TimeValue(Now()) >= FromStart And TimeValue(Now()) <= ToEnd Then
' Do something
Debug.Print Now
Else
' Do something else
Debug.Print "bla bla !!!"
End If
End Sub
答案 0 :(得分:1)
您的代码不起作用的原因是布尔顺序优先级存在问题。自&#34;和&#34;操作先于&#34;或&#34;操作得到你没想到的。
如果希望代码按原样工作,则应在ORed表达式周围添加括号。当然,代码也应该像Ken评论的那样进行简化。
Public Sub Example()
Dim FromStart As Date
Dim ToEnd As Date
Dim DayNow As Date
FromStart = TimeValue("07:00:00 AM")
ToEnd = TimeValue("04:00:00 PM")
DayNow = Weekday(Now())
If (DayNow >= vbMonday And DayNow <= vbFriday) And _
(TimeValue(Now()) >= FromStart And TimeValue(Now()) <= ToEnd) Then
' Do something
Debug.Print Now
Else
' Do something else
Debug.Print "bla bla !!!"
End If
End Sub