1
我有一个简单的代码,将复制我股票投资组合的当前值并将其粘贴到表中。我最近试图添加一个计时器,以便它每小时自动执行一次。它可以工作,但是它会将值粘贴到表格中四到五次。我周围搜索,我认为这可能是因为它只需一秒钟的时间来运行宏,所以它循环,直到一秒钟过去。Excel VBA OnTime宏运行多次
下面的代码:
Sub AutoPL()
Worksheets("Overview").Range("C15:D15").Copy
Worksheets("Data").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Call PLTimer
End Sub
Sub PLTimer()
Application.OnTime Now + TimeValue("01:00:00"), "AutoPL"
End Sub
在此先感谢
你可以添加公共intLastHrRun,intLastMinuteRun和intLastSecondRun,然后比较'时间'值,如果不同的小时,我认为你真的需要,然后运行,如果相同的小时,然后不。或者将'Now + TimeValue(“01:00:00”),'设置为var,然后在运行这段时间后取消运行时间,然后在PLTimer中重置。 –
@Nathan_Sav最好是将Dim TimeLastRun设置为Double,因为与存储三个Integer并比较它们相比,这将非常精确。 –
@mclapham如果问题确实代码运行速度太快,只需在调用“PLTimer”之前添加'Application.Wait(TimeValue(“00:01:00”))''。这将增加一个明确的等待时间,只需一分钟。 –