Excelでセルの値が変化したときに自動で音声を再生するVBAは、学習や通知用途で便利です。今回は、セルA1とA2の値が1を超えた際にそれぞれ異なる音声を再生する方法を解説します。
1. Worksheet_Changeイベントの活用
現在使用中のプログラムはWorksheet_SelectionChangeを利用していますが、値が変更されたときに発火させたい場合はWorksheet_Changeイベントを使うのが適切です。
これにより、セルの値が直接変更されたタイミングで処理が実行されます。
2. 複数セルの監視と音声再生
セルA1とA2の値を監視し、それぞれ条件に応じて異なる音声を再生するサンプルコードは以下の通りです。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Range("A1").Value > 1 Then Application.Speech.Speak "よくできました"
End If
If Not Intersect(Target, Range("A2")) Is Nothing Then
If Range("A2").Value > 1 Then Application.Speech.Speak "もうすこしです"
End If
End Sub
このコードでは、A1またはA2の値が変更された際に、それぞれの条件を満たす場合のみ音声が再生されます。
3. 注意点と改善ポイント
複数セルを同時に変更した場合は、Intersectでチェックして個別に処理することが重要です。また、音声の重複再生を避けるため、値の変化前後を比較するロジックを追加するとさらに安定します。
まとめ
Excel VBAで複数セルの値変化に応じて異なる音声を再生するには、Worksheet_Changeイベントを使う方法が最も簡単です。A1とA2をそれぞれ監視し、条件に応じてApplication.Speech.Speakで音声を再生することで、目的の動作が実現できます。


コメント