SENDKEYS语句无法执行

时间:2016-01-11 05:55:40

标签: vba excel-vba excel

我使用以下过程作为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

我注意到这个程序只有在我按下创建的表格控制按钮手动运行时才能(在编辑模式下)。 为什么它不作为代码的一部分运行是我无法理解的。

1 个答案:

答案 0 :(得分:3)

有时您需要允许应用程序处理其消息队列。在DoEventsSendKeys ("{ESC}")之间粘贴ThisWorkbook.Close False

Public Sub Countdown()
    ThisWorkbook.Activate
    SendKeys ("{ESC}")
    DoEvents
    ThisWorkbook.Close False
End Sub