允许Excel在application.Speech.Speak处于活动状态时执行操作

时间:2015-03-06 15:23:37

标签: excel vba excel-vba doevents

我有一个代码作为倒数计时器(一张纸上最多三个计时器),并且在计时器处于活动状态时会发生多个动作。现在一切都很好。当任何计时器命中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将其置于第一次蜂鸣声之前,但它无效。

3 个答案:

答案 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)

应该使您能够使用工作簿维护功能