允许excel行动,而application.Speech.Speak是活跃的

我有一个充当倒数计时器的代码(一张纸上最多三个计时器),并且在计时器处于活动状态时发生了几个动作。 现在一切正常。 当任何计时器达到0时,运行下面的代码片段:

If Sheets("Sheet1").Range("C8").Interior.Color = 255 Or Sheets("Sheet1").Range("G8").Interior.Color = 255 Or Sheets("Sheet1").Range("K8").Interior.Color = 255 Then Beep Application.Speech.Speak ("Part is done") Beep Call AlertTIMER Else Exit Sub End If 

从上面的代码段调用的AlertTIMER子运行Application.Wait 。 在上次调用和下一次调用之间创build一个3秒的暂停。 我已经包含了等待函数的原因是因为当Application.Speech正在运行时,我无法完成任何其他操作(例如单击终止Alert子项的“Stop”命令button)。

有没有办法允许命令button,而Application.Speech是活跃的,所以我可以删除Application.Wait函数? 或者我需要保持我的Application.Wait的解决方法?

我已经尝试使用DoEvents通过将其放置在第一声蜂鸣之前,但它没有工作。

你可以添加指令DoEvents,它将允许操作系统检查任何其他交互,如点击…检查一些关于这个教程

 Application.Speech.Speak ("Part is done",true) 

这应该使您能够保持工作簿的function