我有一些图表是根据一个单元格中的值更新的。我正在尝试编写一个脚本,它每秒钟改变这个单元格中的值,并在这个过程中更新图形。然而,程序似乎不需要等待一秒来调用这个过程,而是直接运行所有的程序。我尝试过其他方法,比如Application.wait,它适用于等待,但它不更新图形。从我在互联网上发现的信息来看,Application.OnTime似乎是最好的选择。有人能帮我弄清楚为什么Application.OnTime不等一秒吗?这是我的代码:
Sub graphOverTime()
Do While Range("N5").Value = "Running"
'changes cell N5 to Not running on condition
Call my_procedure
'Update value in D3 that impacts the graphs
current_month = Range("D3").Value
Range("D3").Value =
Application.WorksheetFunction.EoMonth(current_month, 1)
DoEvents
'Wait one second to rerun procedure
Application.OnTime Now + TimeValue("0:00:01"), "graphOverTime"
Loop
End Sub发布于 2022-10-20 12:05:06
您的主要问题是Do While循环,这会导致Application.OnTime设置graphOverTime的重叠计划调用。首先,以下是你想做的事情的一种方式
Sub graphOverTime()
If Range("N5").Value = "Running" Then
'changes cell N5 to Not running on condition
Call my_procedure
'Update value in D3 that impacts the graphs
Range("D3").Value = Application.WorksheetFunction.EoMonth(Range("D3").Value, 1)
DoEvents
'Wait one second to rerun procedure
Application.OnTime Now + TimeValue("0:00:01"), "graphOverTime", False
End If
End Subhttps://stackoverflow.com/questions/74139169
复制相似问题