【发布时间】:2015-05-08 05:50:15
【问题描述】:
我有一个用作倒数计时器的代码(一张纸上最多三个计时器),并且在计时器处于活动状态时会发生一些动作。现在一切正常。当任何计时器达到 0 时,将运行以下 sn-p 代码:
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
从上面的 sn-p 调用的 AlertTIMER sub 运行 Application.Wait,在它最后一次调用和下一次调用之间创建一个 3 秒的暂停。我包含等待功能的原因是,当Application.Speech 正在运行时,我无法完成任何其他操作(例如单击终止警报子的“停止”命令按钮)。
有没有办法允许在 Application.Speech 处于活动状态时按下命令按钮,以便我可以删除 Application.Wait 功能?还是我需要保留 Application.Wait 的解决方法?
我曾尝试使用DoEvents,将它放在第一次哔声之前,但它不起作用。
【问题讨论】:
-
另外,如果您希望我提供代码的其他部分或进一步解释,我可以...只是发生了很多事情,所以我尽量简洁。
-
我不太清楚您要做什么。如果你只是想在执行时打破
application.speech.speak,你可以ctrl+break。 -
好的,所以 Alert sub(Beep “Part is done” Beep)正在响起,然后有 3 秒的暂停(由于
Application.Wait)。此暂停允许某人单击命令按钮(停止),这将导致警报子停止被触发。如果他们不这样做,则在 3 秒过后,将再次调用 Alert 子。如果我不包括暂停(理想情况下我想删除),那么当警报子处于活动状态时,就不可能单击命令按钮(停止)。我正在寻找一种能够在子警报处于活动状态时执行操作的方法(哔声“部分完成”哔声)。 -
我不想使用 ctrl+break,因为有时我会执行一个动作,但希望 Alert 子继续。一个例子是有多个计时器。因此,如果有两个触发警报,我希望能够单击一个停止,然后完成一个动作......而警报子继续,因为没有点击第二个停止。 ctrl+break 会让我从两者中跳出来。另外,我想避免使用 ctrl+break,因为我不想在键盘上单击某些东西,而且我不相信 sendkeys 被认为是可靠的 - 所以我不想将它作为代码的一部分。