【VBA】基準値を超えたら警告音を鳴らすマクロの作り方と導入手順
基準値を超えたら警告音を鳴らしてお知らせしたい!
このような要望をVBAを使って解決します。
この記事では、基準値を超えると警告音を鳴らすマクロの作り方、導入方法を詳しく解説。
基準値を超えると警告音を鳴らすマクロは以下の問題を解決することができます。
- 重要なデータを見逃してしまう
- 複雑にフィルターをかけてデータを管理している
- データ管理担当者が変わるとミスが発生する
エクセル業務の効率をアップさせたい!という方は是非参考にしてみてください。
警告音を鳴らすマクロとは
警告音を鳴らすマクロとは、
ある条件を満たしたときパソコンに保存されているWAVファイルを再生する
というプログラムです。
状況に合わせて「ポロン」とか「ブーブー」という音にアレンジすることができます。
Windowsの場合、音ファイルが保存されている場所がこちら
基準値を超えると警告音を鳴らすマクロを具体的にイメージするために以下のサンプル事例を使って解説していきます。
サンプル事例の内容がこちら
・F列の値が150を越えると背景色が赤色になり警告音が鳴る
・I列の日付が7日以内になると背景色が赤色になり警告音が鳴る
というVBAです。
警告音を鳴らすと同時に背景色も変化させる仕組みにしています。
基準値を超えると警告音を鳴らすマクロの作り方
基準値を越えると警告音を鳴らすマクロは、
「音ファイルを操作するVBA」と「条件によって警告音を鳴らすVBA」
の2種類のVBAで構成されています。
条件を満たすと「音ファイルを操作するVBA」が実行される
という仕組みです。
それぞれのVBAについて詳しく解説していきます。
音ファイルを操作するVBA
音ファイルを操作するVBAのコードがこちら
Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
上記のコードは
パソコン内にある音ファイル(WAVファイル)を操作するためのVBA
です。
難しい内容なのでそのままコピペして使って問題ありません。
上記のコードを入力した後は音ファイルを操作するVBAを入力していきます。
Sub 音1()
Dim file As String
file = "C:\Windows\Media\Alarm01.wav"
Call PlayMusic(file)
End Sub
Function PlayMusic(ByRef file As String)
Call mciSendString("play " & file, "", 0, 0)
End Function
音ファイルを操作するVBAはFunctionを使って2種類のVBAから構成されています。
ちょっとわかりにくい!と感じる方はコピペして使ってみてください。
条件によって警告音を鳴らすVBA
条件によって警告音を鳴らすVBAのコードがこちら
Sub 警告()
If Cells(ActiveCell.Row - 1, ActiveCell.Column) >= 150 Then
Cells(ActiveCell.Row - 1, ActiveCell.Column).Interior.Color = RGB(255, 0, 0)
Call 音1
ElseIf Cells(ActiveCell.Row - 1, ActiveCell.Column) < 150 Then
Cells(ActiveCell.Row - 1, ActiveCell.Column).Interior.ColorIndex = 0
End If
End Sub
上記のコードは
150以上の数値を入力すると背景色を赤に変化させ、「音1」というVBAを実行する
という内容です。
基準値を超えたら警告音を鳴らすマクロの導入方法
基準値を超えたら警告音を鳴らすマクロの導入方法をサンプル事例を使ってご紹介します。
手順通りに操作すれば簡単に基準値を超えると警告音を鳴らすVBAを導入できるので是非挑戦してみてください。
様式の設定
サンプル事例では、仕事で使っている「材料管理表」の様式を使っています。
材料管理表では、
F列、I列の値が変化したときVBAが実行される
という設定にしています。
VBAを設定する場所は自由に変更可能でどんな様式にもVBAを設定することが可能です。
VBAの設定
様式の設定が完了したらVBAを設定していきます。
VBAの編集画面を設定
- 「Alt」+「F11」押下でVBA編集画面を開く
- 「Module1」を作成
音ファイルを操作するVBAの設定
Module1に音ファイルを操作するVBAに関係する7つのコードを入力します。
7つのコードはこちら
Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Sub 音1()
Dim file As String
file = "C:\Windows\Media\Alarm01.wav" '再生する音楽ファイルのフルパス
Call PlayMusic(file) '再生
'Call StopMusic(file) '停止
'Call PauseMusic(file) '一時停止
'Call ResumeMusic(file) '一時停止から再開
End Sub
Sub 音2()
Dim file As String
file = "C:\Windows\Media\Alarm02.wav" '再生する音楽ファイルのフルパス
Call PlayMusic(file) '再生
'Call StopMusic(file) '停止
'Call PauseMusic(file) '一時停止
'Call ResumeMusic(file) '一時停止から再開
End Sub
Function PlayMusic(ByRef file As String)
Call mciSendString("play " & file, "", 0, 0)
End Function
Function StopMusic(ByRef file As String)
Call mciSendString("stop " & file, "", 0, 0)
End Function
Function PauseMusic(ByRef file As String)
Call mciSendString("pause " & file, "", 0, 0)
End Function
Function ResumeMusic(ByRef file As String)
Call mciSendString("resume " & file, "", 0, 0)
End Function
今回のサンプル事例では使わないコードも含まれていますがまとめてコピペしておくことをおすすめします。
条件によって警告音を鳴らすVBAの設定
Module1に条件によって警告音を鳴らすVBAに関係する2つのコードを入力します。
2つのコードはこちら
Sub 警告()
If Cells(ActiveCell.Row - 1, ActiveCell.Column) >= 150 Then
Cells(ActiveCell.Row - 1, ActiveCell.Column).Interior.Color = RGB(255, 0, 0)
Call 音1
ElseIf Cells(ActiveCell.Row - 1, ActiveCell.Column) < 150 Then
Cells(ActiveCell.Row - 1, ActiveCell.Column).Interior.ColorIndex = 0
End If
End Sub
Sub 警告2()
Dim d As Date
Dim Num As Long
d = Cells(ActiveCell.Row - 1, ActiveCell.Column)
Num = d - Date
If (Num < 7) And (Num > 0) Then
Cells(ActiveCell.Row - 1, ActiveCell.Column).Interior.Color = RGB(255, 0, 0)
Call 音2
Else
Cells(ActiveCell.Row - 1, ActiveCell.Column).Interior.ColorIndex = 0
End If
End Sub
特定のセルを編集するとVBAを実行する設定
Sheet1に特定のセルを編集するとVBAを実行するコードを入力します。
コードがこちら
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Selection, Columns(6)) Is Nothing Then
GoTo L1
Else
Call 警告
End If
L1:
If Intersect(Selection, Columns(9)) Is Nothing Then
Exit Sub
Else
Call 警告2
End If
End Sub
2行目、8行目にあるColumnsの数値を変更することでVBAが実行されるセルの場所を変更することができます。
業務内容に合わせた警告音を鳴らすVBAの導入方法
基準値を超えると警告音を鳴らすVBAを業務内容に合わせて導入したい!
こんな要望を解決する方法をご紹介します。
VBAの導入方法がこちら
- マメBlogにVBA開発依頼をする
- 基準値を超えると警告音を鳴らすVBAをダウンロードして自分でアレンジする
VBA未経験の方は「マメBlogにVAB開発依頼をする」方法がおすすめ!
VBAの知識があって自分でコードを編集できる方は「VBAが設定されたエクセルファイルをダウンロードする」方法がおすすめ!
です。
それぞれの方法について詳しく解説してきます。
マメBlogに警告音をならすマクロのアレンジを依頼する
マメBlogでは、基準値を超えると警告音を鳴らすVBAを業務内容に合わせてアレンジするサービスを行っています。
マメBlogのVBA開発は以下のリンクから依頼可能です。
>>マメBlogのVBA開発
依頼方法は、
「こんなエクセル業務に基準値を超えると警告音を鳴らすVBAを導入して自動化したい」
みたいなザックリとした内容でOKです。
料金や納期は依頼内容によって変化しますのでまずはどんなVBAを導入したいのか!をお気軽にお問い合わせください。
マメBlogへVBA開発を相談してみたい方はこちら
警告音を鳴らすマクロが設定されたエクセルファイルをダウンロードする
サンプル事例で紹介している基準値を超えると警告音を鳴らすVBAが設定されたエクセルファイルを下記のサイトでダウンロードすることが可能です。
設定されているVBAをそのまま使うもよし!
業務内容に合わせてアレンジするもよし!
VBA学習のために利用するもよし!
サイトでは設定されているVBAのアレンジ方法が具体的に解説されているのでVBA初心者の方でも簡単にコードを編集することが可能です。
基準値を超えると警告音を鳴らすVBAを使ってエクセル業務の効率化に役立ててみてください。
ディスカッション
コメント一覧
まだ、コメントがありません