Excel暂停/时间等待宏

Excel暂停/时间等待宏,excel,vba,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)) =SayIt(D15好问题!……代码需要“记住”上一个调用为True以避免重复。我们可以使用全局布尔值来

我的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))

=SayIt(D15好问题!……代码需要“记住”上一个调用为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

因为只有一个全局函数,这只适用于一个函数调用。

谢谢你提出这个问题,它让我的早晨变得更好,因为我能想到的就是在电影《玩具总动员》中巴斯光年被打在脸上“巴斯,巴斯,巴斯光年拯救!”…但是说真的,你能用一个辅助单元格和一个点击事件来确认一个报警吗?用
静态
而不是Public,并将变量移到函数中:
静态以前是布尔的
。这样你就不用担心声明重叠,只有一个函数可以在@user3778967中使用该标志你看到肖恩·切希尔的评论了吗??