Excel Play A Sound Based On Cell’s Value
The created macro plays a sound according to value of changed cell in Column C.
New value can be entered to cells in Column C with
combobox. In this macro, we have used 3 different sound from Windows sound library. (chimes.wav ,chord.wav ,tada.wav)
Worksheet_Change procedure of Sheet1 :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim mh As Range, by As Range
Application.EnableEvents = False
Set mh = Range("C:C")
For Each by In Range(Target.Address)
If Not Intersect(by, mh) Is Nothing Then
Select Case by.Value
Case "Completed"
PlayTheSound "chimes.wav"
Case "Not Completed"
PlayTheSound "chord.wav"
Case "Pending"
PlayTheSound "tada.wav"
End Select
End If
Next by
Set mh = Nothing
Application.EnableEvents = True
End Sub
Dim mh As Range, by As Range
Application.EnableEvents = False
Set mh = Range("C:C")
For Each by In Range(Target.Address)
If Not Intersect(by, mh) Is Nothing Then
Select Case by.Value
Case "Completed"
PlayTheSound "chimes.wav"
Case "Not Completed"
PlayTheSound "chord.wav"
Case "Pending"
PlayTheSound "tada.wav"
End Select
End If
Next by
Set mh = Nothing
Application.EnableEvents = True
End Sub
Our procedure that we used to play sound :
Sub PlayTheSound(ByVal WhatSound As String)
If Dir(WhatSound, vbNormal) = "" Then
' WhatSound is not a file. Get the file named by
' WhatSound from the Windows\Media directory.
WhatSound = Environ("SystemRoot") & "\Media\" & WhatSound
If InStr(1, WhatSound, ".") = 0 Then
' if WhatSound does not have a .wav extension,
' add one.
WhatSound = WhatSound & ".wav"
End If
If Dir(WhatSound, vbNormal) = vbNullString Then
' Can't find the file. Do a simple Beep.
Beep
Exit Sub
End If
Else
' WhatSound is a file. Use it.
End If
' Finally, play the sound.
#If Win64 Then
sndPlaySound WhatSound, 0&
#Else
sndPlaySound32 WhatSound, 0&
#End If
End Sub
If Dir(WhatSound, vbNormal) = "" Then
' WhatSound is not a file. Get the file named by
' WhatSound from the Windows\Media directory.
WhatSound = Environ("SystemRoot") & "\Media\" & WhatSound
If InStr(1, WhatSound, ".") = 0 Then
' if WhatSound does not have a .wav extension,
' add one.
WhatSound = WhatSound & ".wav"
End If
If Dir(WhatSound, vbNormal) = vbNullString Then
' Can't find the file. Do a simple Beep.
Beep
Exit Sub
End If
Else
' WhatSound is a file. Use it.
End If
' Finally, play the sound.
#If Win64 Then
sndPlaySound WhatSound, 0&
#Else
sndPlaySound32 WhatSound, 0&
#End If
End Sub
No comments:
Post a Comment