VBA功能在一段时间内改变值时发出警报

时间:2009-08-06 05:40:32

标签: excel vba excel-vba

我有一个excel单元格,其值每分钟更新一次。

我需要的是一个警告信息框;而那个单元格值会移动到特定时间。

假设一个单元格的值为10:

  • 如果它在一分钟内达到7,那么我需要一个消息框来提醒它。

  • 如果一分钟内没有达到7,那我就不需要任何提醒。

请帮我写一个宏。

2 个答案:

答案 0 :(得分:5)

在ThisWorkBook的VBA编辑器中,您可以编写以下代码

Dim WithEvents SheetToWatch As Worksheet

Private Sub SheetToWatch_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
    If Target.Value = 7 Then
        MsgBox "changed to 7"
    End If
End If
End Sub
Private Sub Workbook_Open()
    Set SheetToWatch = Sheets("Sheet1")
End Sub

基本上,代码在工作簿打开时将Sheet1的引用设置为变量SheetToWatch。使用WithEvents声明变量可以捕获事件。

我正在使用工作表的Change事件并检查更改的单元格是否为A2。如果是这样,我正在检查或比较7的值(它可以是动态的,取决于你想如何处理它)。

看看这是否有帮助。

答案 1 :(得分:0)

无法以任何我能想到的方式完成功能。

如果您控制正在更新单元格的机制,那么您可以调用您编写的VBA子例程,而不必发送警报,然后从该例程更新单元格。

如果你不控制更新机制,那么我能想到的唯一可能有用的是Cell,Range或Worksheet类有一个ChangedDate事件,你可以从VBA捕获并从那里做警报。