我使用以下过程作为OnTime方法的一部分:
Public Sub Countdown()
ThisWorkbook.Activate
SendKeys ("{ESC}")
ThisWorkbook.Close False
End Sub
这里的想法是在一段时间过后关闭工作簿;如果工作簿处于编辑模式,那么" SendKeys(" {ESC}")"语句应该取消激活编辑模式。问题是它没有那样做!一旦我手动按下" ESC"按钮,然后我的程序运行。 如果你能帮助我理解我在这里做错了什么,我将不胜感激。
更新:
在@Jeeped推荐之后,我通过添加DoEvents
行更新了上面的代码:
Public Sub Countdown()
ThisWorkbook.Activate
SendKeys ("{ESC}")
DoEvents
ThisWorkbook.Close False
End Sub
我注意到这个程序只有在我按下创建的表格控制按钮手动运行时才能(在编辑模式下)。 为什么它不作为代码的一部分运行是我无法理解的。
答案 0 :(得分:3)
有时您需要允许应用程序处理其消息队列。在DoEvents
和SendKeys ("{ESC}")
之间粘贴ThisWorkbook.Close False
。
Public Sub Countdown()
ThisWorkbook.Activate
SendKeys ("{ESC}")
DoEvents
ThisWorkbook.Close False
End Sub