Joydip拥有一个Excel工作表,该工作表会自动使用实时商品市场数据进行自动更新。每当指定单元格/范围中的数据发生更改以满足某些预定义条件时,他都希望显示一个包含特定消息的消息框。数据验证无效,因为当数据自动更改时不会触发验证功能。

检查数据并显示所需消息框的最佳方法是使用由Worksheet_Change事件触发的宏。每当单元格内容更改时,都会触发此事件。但是,它不是由单元格中显示内容的更改触发的。例如,如果将一条新的商品数据放入单元格,则会触发该事件。但是,如果重新计算公式并显示该公式的新结果,则不会触发该事件。为什么?

因为公式本身并没有改变;只是更改了公式(显示内容)的结果。

触发Worksheet_Change事件后,宏可以执行您希望它执行的任何操作,包括显示消息。对于此示例,我们假设要检查的范围是A1:C5(这是商品数据插入的位置),并且要触发该消息的条件是该范围的平均值为5。范围内的任何单元格都会更改,范围内的平均值为5,则显示一条消息。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rng As Range     Set rng = Range("A1:C5")

If Not Intersect(Target, rng) Is Nothing Then         If Application.WorksheetFunction. _           Average(rng) = 5 Then             MsgBox "The average of " & _               rng.Address & " = 5"

End If     End If     Set rng = Nothing End Sub

将此宏放置在要监视的工作表的工作表对象中很重要。显示VBA编辑器时,在“项目资源管理器”区域中右键单击所需的工作表,然后从出现的“上下文”菜单中选择“查看代码”。在此代码窗口中放置宏。

只要工作表上的任何地方发生更改,宏都会再次触发。然后,宏使用“相交”函数确定更改是否发生在所需的A1:C5范围内。如果是,则检查范围的平均值,如果结果为5,则显示消息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(2906)适用于Microsoft Excel 97、2000、2002和2003。