11
社区成员




作者:昨夜星辰
今天说的定时执行任务是指到达某个时间点让脚本去执行任务,而不是每间隔多久让脚本去执行任务。区别就是,前者通常是判断时间,而后者通常是判断时间差,从实际应用中的使用途径也会有所不同。
思路1:
只判断时间,不判断日期。
优点:
无需填写日期。
缺点:
一旦当前时间超过设定时间,则条件一直达成。
源码:
Dim 当前时间, 设定时间
设定时间 = CDate("10:00")
Do
当前时间 = Time()
If 当前时间 >= 设定时间 Then
MessageBox "条件达成!"
ExitScript
End If
Delay 100
Loop
思路2:
既判断时间部分,也判断日期部分。
优点:
能精准地判断时间。
缺点:
即便时间部分不变,代码中也需要频繁更改日期部分,来实现每天的定时任务。
源码:
Dim 当前时间, 设定时间
设定时间 = CDate("2022/07/19 10:00")
Do
当前时间 = Now()
If 当前时间 >= 设定时间 Then
MessageBox "条件达成!"
ExitScript
End If
Delay 100
Loop
思路3:
既判断时间部分,也判断日期部分,但日期部分由代码自动计算。
优点:
能精准地判断时间,无需频繁修改日期部分。
缺点:
较以上两种思路而言,没有缺点。
源码:
Dim 当前时间, 设定时间
设定时间 = CDate("10:00")
设定时间 = 获取完整时间(设定时间)
Do
当前时间 = Now()
If 当前时间 >= 设定时间 Then
MessageBox "条件达成!"
ExitScript
End If
Delay 100
Loop
Function 获取完整时间(时间)
Dim 当前时间, 年月日
当前时间 = Now()
年月日 = Year(当前时间) & "/" & Month(当前时间) & "/" & Day(当前时间)
If CDate(时间) < Time() Then '时间已过
获取完整时间 = DateAdd("d", 1, CDate(年月日 & " " & 时间))
Else
获取完整时间 = CDate(年月日 & " " & 时间)
End If
End Function