Conditionally play sounds when a cell value changes
Blog reader Richard asks through email:
I’m a non-programing user of Excel. I import stock prices, using what is called ( I believe) a dde link, into my spreadsheets,from a trading program.
I would like to add a feature to my spreadsheets that, like conditional formatting, alerts me to a price change in a cell, but with a sound or .wav file, instead of a color change of that cell.
Something like: =if b4 =>10.00, play .wav
Is there something you can help me with? I am using office 2003 pro.
You can write a vba macro that can create a windows media control (active-x) component and use it to play a .wav (or mp3) file when a certain event happens. But it would be both time consuming and difficult to implement.
The simple solution is of course “beep” whenever a certain condition is met, in this case, the stock price getting changed.
Thankfully, we have a vba command to do just the job, Beep, will play a standard windows beep sound when called. So all you have to do is, create a user defined function shown below:
Function beepNow()
Beep
End Function
And use it in your excel sheet like: =IF(C2<>C3,beepNow(),""). So when the data gets dynamically refreshed, you would hear a ding if C2 is not equal to C3.
What would use beepNow() for?
|
Comments
RSS feed for comments on this post. TrackBack URI
Leave a comment
If you have a question, please ask in the forums


At Pointy Haired Dilbert, I have one goal, "to make you awesome in excel and charting". PHD is started in 2007 and today has 300+ articles and tutorials on using excel, making better charts. 




There is another alternative of doing this quite easily: Yes, Excel is able to talk to you!
Assume you are having a calculated or otherwise changing value in cell A1 (e.g. =RANDBETWEEN(0,100)), a threshold in cell B1 (e.g. 50) and a text in cell C1 (e.g. “Threshold exceeded”).
Go to the VBA-editor (ALT-F11) and copy the the following procedure into the corresponding sheet:
Private Sub Worksheet_Calculate()
If Range(”A1″).Value > Range(”B1″).Value Then
Application.Speech.Speak (Range(”C1″).Value)
End If
End Sub
Excel will read the text in cell C1, whenever the value in cell A1 is large than the threshold in cell B1. Turn your speakers on and play with cell C1. It sounds a bit funny sometimes, especially when you try to make Excel read texts in other languages than English. But it works…