上下文
我正在Excel VBA中使用Application.OnTime
方法来跟踪我每15分钟要处理的工作。我输入了一些描述我在做什么的文本,然后当我按OK时,该子例程将该文本添加到计划运行该框的时间的列表中。
我特别想使用计划运行该框的时间,因为这意味着如果我不在办公桌旁,则可以在以后的时间填写该框,但是输入仍将对应于该时间我想要。
请注意,我正在使用32位Office 365。
问题
当前的问题是,如果我离开办公桌足够长的时间,则会生成许多输入框。当我回来填写我一直在做的事情时,方框的顺序与计划的顺序不同-相反,第一个方框正确地是最早的方框,但是在确定之后其余的与最新的一起出现。输入框似乎堆叠而不是排队。
这是不可取的,因为我的列表没有按照升序排列。有没有办法改变输入框的这种行为?
工作示例
下面是一个工作示例。
Public Sub Scheduler()
Dim i As Integer
Dim AtTime As Double
For i = 1 To 5
AtTime = Time + (TimeSerial(0,2) * i)
Application.OnTime AtTime,"'InputBoxExample " & AtTime & "'"
Next i
End Sub
Public Sub InputBoxExample(Box_Time As Double)
Debug.Print Format(Box_Time,"hh:mm:ss"),InputBox(prompt:="Put in some input.",Title:="Scheduled at: " & Format(Box_Time,"hh:mm:ss"))
End Sub
如果运行此命令,将其保留10秒钟以上,然后确定每个框(无输入文本),则立即窗口将显示以下内容(的变体):
15:07:01
15:07:09
15:07:07
15:07:05
15:07:03
我希望生成以下列表,即使我稍后再回到输入框:
15:07:01
15:07:03
15:07:05
15:07:07
15:07:09