我有一个代码作为倒数计时器(一张纸上最多三个计时器),并且在计时器处于活动状态时会发生多个动作。现在一切都很好。当任何计时器命中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
,在最后一次调用和下次调用之间创建一个3秒的暂停。我之所以包含wait函数的原因是因为Application.Speech
正在运行时我无法完成任何其他操作(例如单击" Stop"命令按钮以终止Alert子) 。
有没有办法在Application.Speech处于活动状态时按下命令按钮,这样我就可以删除Application.Wait函数了?或者我是否需要保持Application.Wait的工作方式?
我尝试使用DoEvents
将其置于第一次蜂鸣声之前,但它无效。
答案 0 :(得分:1)
public async void OnBtnClicked(object sender, EventArgs args) {
try {
//...
await SetUpTextBox("some path");
//..
} catch {
//... handle error
}
}
Source: https://wellsr.com/vba/2016/excel/make-excel-talk-with-application-speech-speak-vba/
答案 1 :(得分:0)
你可以添加指令DoEvents它将允许操作系统检查任何其他交互,如点击...检查一些关于此的教程
答案 2 :(得分:0)
Application.Speech.Speak ("Part is done",true)
应该使您能够使用工作簿维护功能