
Tips.Net > ExcelTips Home > Macros > Displaying Messages When Automatic Data Changes
Summary: Worksheets can be set up so that they are automatically updated with data pulled from a variety of sources. As data changes in this manner, you may want to be notified when certain criteria are met. This tip describes how you can achieve the type of notification you need in such a scenario. (This tip works with Microsoft Excel 97, Excel 2000, Excel 2002, and Excel 2003.)
Joydip has an Excel worksheet that is constantly and automatically updated with live commodity market data. He wants to display a message box containing a particular message whenever the data in a specified cell/range changes to meet some predefined criteria. Data validation won't work, because the validation feature isn't triggered when data changes automatically.
The best way to check the data and display the desired message box is to use a macro that is triggered by the Worksheet_Change event. This event is triggered any time the contents of a cell are changed. It is not, however, triggered by a change in what is displayed in a cell. For instance, if a new piece of commodity data is placed into a cell, then the event is triggered. However, if a formula is recalculated and a new result of that formula displayed, the event is not triggered. Why? Because the formula itself didn't change; it was only the result of the formula (what is displayed) that was changed.
Once the Worksheet_Change event is triggered, the macro can do anything you want it to do, including displaying your message. For this example, let's assume that the range to check is A1:C5 (this is where the commodity data is being inserted) and that the criteria you want to trigger the message is that the average of the range is 5. If the contents of any cell in the range is changed and the average of the values in the range is 5, then a message is displayed.
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
It is important that this macro be placed in the sheet object for the worksheet you want to monitor. When you display the VBA Editor, right-click on the desired worksheet in the Project Explorer area, then choose View Code from the resulting Context menu. This code window is where you place the macro.
The macro, again, is triggered anytime there is a change anywhere on the worksheet. The macro then uses the Intersect function to determine if the change occurred within the desired A1:C5 range. If it did, then the average of the range is checked, and the message displayed if the result is 5.
Tip #2906 applies to Microsoft Excel versions: 97 2000 2002 2003
Save Time and Money! Many people need to keep track of employee time, but don't know where to start when it comes to creating a spreadsheet. Here's a way to save time, effort, and money with ready-to-use timesheet templates.
Check out Timesheet Templates today!
Have thousands of ExcelTips at your fingertips, on your own system. Answer your own questions or help support others. (more information...)
Ask an Excel Question
Make a Comment
ExcelTips FAQ
ExcelTips Premium
Beauty Tips
Bugs and Pests Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Money Tips
Organizing Tips
Pet Tips
Word2007 Tips
WordTips
Advertise on the
ExcelTips Site