Excel暂停/时间等待宏

时间:2014-06-26 10:58:03

标签: excel vba

我的excel电子表格中有以下功能,只要两个未来合约之间出现某种差价,就会说“交易”:

Function SayIt(c As Boolean, s As String)
If c Then Application.Speech.Speak s
SayIt = c
End Function

然后在工作表上我有:

=SayIt(D15<=G6;REPT("trade ";1))

这很有效,它会说“交易”,但每当价格在套利范围内移动时,它将重复“贸易,贸易,贸易,贸易......”

现在我需要的是一种功能,它可以让它停止说“交易”,而价格允许扩散套利,或者它只会在20秒或1分钟后重复,如果它仍然在设定价差内。

谢谢

1 个答案:

答案 0 :(得分:1)

好问题! ........代码需要&#34;记住&#34;前一次调用是 True 以避免重新说话。我们可以使用全局布尔值来执行此操作:

在标准模块中:

Public Was_c_TrueBefore As Boolean

Function SayIt(c As Boolean, s As String)
    If c And Not Was_c_TrueBefore Then
        Application.Speech.Speak s
        Was_c_TrueBefore = True
    End If
    If Not c Then
        Was_c_TrueBefore = False
    End If
    SayIt = c
End Function

因为只有一个Global,所以这只适用于一个函数调用。