bottom
Great ExcelTips!
         
Your e-mail address is safe!
Close Note

Tips.Net > ExcelTips Home > Macros > Displaying Messages When Automatic Data Changes

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


PivotTables Got You Perplexed? PivotTables for the Faint of Heart shows how you can start using Excel's PivotTable tool right away to spin your data into gold! You discover how easy it really is to crunch the numbers you need to crunch. Uncover the power of creating PivotTables, editing them, formatting them, customizing them, and much more.
 
Check out PivotTables for the Faint of Heart today!

Helpful Links

Ask an Excel Question
Make a Comment

Tips.Net Home

ExcelTips FAQ
ExcelTips Premium

Learn Access Now

Beauty Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Money Tips
Organizing Tips
Pest Tips
Pet Tips
Word2007 Tips
WordTips

Advertise on the
ExcelTips Site

 

Great Info!

Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your e-mail address and click "Subscribe."
     
(Your e-mail address will never be shared with anyone, ever.)