我正在尝试制作一个宏,该宏在运行时至少会向用户返回一些部分控制权。如果用户编辑单元格,则不能危险地更改宏行为,因为依赖内容很少。
我正在使用这种方法来允许用户在宏重新获得控制权并继续执行下一条语句之前占用执行线程并提交他们的单元格更改:
Sub retCtrl(Optional ms As Long = 350)
Dim l As Long: l = Timer
Do While Timer - l < (0# + ms / 1000)
DoEvents
Loop
End Sub
我把它放在了一些长语句和内部循环之后。
它很不稳定,但很实用,只有一个问题:如果用户需要很长时间来编辑单元格,宏就会静默停止。
谁能解释为什么会这样?是因为计时器超过了阈值吗?我认为当工作簿处于编辑模式时所有宏执行都会停止?
有关如何处理此问题的任何建议?