【发布时间】:2016-07-25 05:40:56
【问题描述】:
我有 VBA 代码在使用 application.ontime 一段时间后调用此方法,
Sub run()
Worksheets("Sheet1").Calculate
Cells(2, 5).Value = Cells(2, 5).Value + 1
ActiveWorkbook.Save
End Sub
但是,在 ActiveWorkbook.Save 行之后,宏停止运行。保存工作簿后如何继续运行宏,或者在保存时调用宏?我正在使用 excel 2013 顺便说一句
这是我调用运行的宏:
Sub every30seconds()
runTime = Now + TimeValue("00:00:30")
Application.OnTime EarliestTime:=runTime, Procedure:="run", schedule:=True
If Cells(2, 5).Value = 2 Then
Application.OnTime runTime, "run", , False
Cells(2, 5).Value = Cells(2, 5).Value - 2
End If
End Sub
【问题讨论】:
-
调用运行子的宏代码在哪里?你的潜艇中有代码
Workbook_AfterSave或Workbook_BeforeSave -
30秒内插入程序的代码不应该在你的运行子中吗?这应该被移入运行:
runTime = Now + TimeValue("00:00:30") Application.OnTime EarliestTime:=runTime, Procedure:="run", schedule:=True -
您是否希望它每 30 秒运行一次?如果是这样,您需要在一个或其他宏中进行循环。正如所写的那样,宏只会运行一次。
-
@ScottHoltzman - 假设 E2 的初始值为零,OP 的代码只会将其设置为 1 然后停止。它永远不会回到“每 30 秒”代码来测试 E2 是否等于 2。
-
@ScottHoltzman 为那个人感到抱歉!你一直都是对的