问题描述
我正在尝试使用 vba usind application.ontime 事件编写电子邮件提醒,但这是我的第一次,所以我有一些问题。
首先在这里我想做什么:
我有一张这样的桌子
如果在显示的小时之前的一小时内没有点击确定按钮,我想发送一封电子邮件,所以我正在尝试一些带有 ontime 事件的代码,我知道这可能会触发多个时间事件,所以为了避免失去对准时呼叫的跟踪,我想做这样的事情:
(这只是一个尝试代码的工作簿,一旦我想通了我将在真正的工作簿中修改代码)
Sub timer()
r = TimeSerial(Hour(Foglio1.Cells(1,"h").Value),Minute(Foglio1.Cells(1,0)
Application.OnTime r,"test"
End Sub
这是timer sub的启动,然后在这里测试
Sub test()
Dim i As Long
Foglio1.Cells(1,1).Value = Foglio1.Cells(1,1).Value + 1
Call test2
End Sub
测试是我最终放置电子邮件提醒宏的地方(这只是让我不明白它是如何工作的)
这里是test2
Sub test2()
Dim oraricheck As New Collection
For i = 1 To 3
oraricheck.Add Foglio1.Cells(i,"l").Value
Next i
Dim orascritta As Date
orascritta = Foglio1.Cells(1,"h").Value
Dim num As Long
num = Ncoll(oraricheck,orascritta)
On Error GoTo basta
Foglio1.Cells(1,"h").Value = oraricheck(num + 1)
Call timer
basta:
End Sub
Function Ncoll(coll As Collection,ora As Date) As Long
Dim i As Long
For i = 1 To coll.Count
If coll(i) = ora Then
Ncoll = i
Exit Function
End If
Next i
End Function
所以这个想法是,我写了一个代码来提取最早的时间并将其放入一个单元格中(在示例中 Foglio1.Cells(1,"h").Value)
然后启动计时器 ---> 测试--> 使用 test2 我创建了从最小到最大的顺序检查所需的小时数的集合,一旦检查了最早的,则将放入第二小的H1 以此类推,直到检查所有日期。
现在我有一些问题
如果我关闭工作簿,我会停止 ontime 事件,如果我打开工作簿,我会继续,但是如果我打开这本书并且时间设定已经过去,会发生什么?
例如
application.ontime 时间值("12:00:00"),"测试"
如果我开始时超过了 12 点会怎样?
什么也没有,或者第二天的同一时间通话?
我再次尝试启动 ontime 事件关闭并在工作簿打开事件中通过恢复调用重新打开
Private Sub Workbook_open()
Call timer
End Sub
sub 工作但由于某种原因单元格没有更新,直到我在工作表中做一些事情,这正常吗?还是只是一个错误?
又是一个问题
如果我构建了一个时间集合并设置了一系列准时事件,我该如何停止已经设置的事件?
我怎样才能(如果可能)从他们停止的地方恢复?
提前致谢
我希望我说清楚(对不起我的英语)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)