• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:計算結果で音を1回で止める方法を教えてください。)

Excelの計算結果で音を1回で止める方法

このQ&Aのポイント
  • 計算結果で音を1回で止める方法を教えてください。以前、こちらで教えてもらったものを使わせてもらっているんですが、これを少し改造したいんですが、色々イジってもわかりませんでしたのでご教授ください。
  • A3やA7の計算結果で、注文数が在庫数を超えるとセルの表示が変わり、各種設定した各フルーツ追加の音が鳴る設定なんですが、ブドウ注文数4個になり、ブドウ在庫数3個を超えるとセルの表示がブドウ追加となり、ブドウ追加!と音が鳴るんですが、更にブドウが5個6個と追加されると、ずっとブドウ追加!と音が鳴り続けます。これをブドウ追加!と音が鳴ったら、それでブドウ追加音は鳴らないようにしたいんです。バナナが追加状態になった場合も、バナナ追加!と1回鳴って、それ以降、バナナ追加が続いても音は終了と。つまりA3やA7の計算結果1個につき、1回で音は終了にしたいんです。
  • Excel2003のBOOK1の中での計算結果で音を1回で止める方法を教えてください。ブドウ注文数2個(RSSによりランダムでリアルタイムで変わる)、ブドウ在庫数3個(固定数字)、バナナ注文数2個(RSSによりランダムでリアルタイムで変わる)、バナナ在庫数3個(固定数字)の計算結果で、注文数が在庫数を超えるとセルの表示が変わり、各種設定した各フルーツ追加の音が鳴る設定なんですが、ブドウ注文数4個になり、ブドウ在庫数3個を超えるとセルの表示がブドウ追加となり、ブドウ追加!と音が鳴るんですが、更にブドウが5個6個と追加されると、ずっとブドウ追加!と音が鳴り続けます。これをブドウ追加!と音が鳴ったら、それでブドウ追加音は鳴らないようにしたいんです。バナナが追加状態になった場合も、バナナ追加!と1回鳴って、それ以降、バナナ追加が続いても音は終了と。つまりA3やA7の計算結果1個につき、1回で音は終了にしたいんです。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

関数を使わずにChangeイベントで処理しました。 '標準モジュールに '↓Privateを外しています Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _     ByVal lpszName As String, _     ByVal hModule As Long, _     ByVal dwFlags As Long) As Long '↓PrivateをPublicに変更 Public Const SND_SYNC As Long = &H0 ' 同期再生 Public Const SND_ASYNC As Long = &H1 ' 非同期再生 Public Const SND_PURGE As Long = &H40 ' 再生停止 'シートモジュールに Private Sub Worksheet_Change(ByVal Target As Range)   Dim WaveFileName As String   With Target     If .Count > 1 Then Exit Sub     If .Address = "$A$1" Then       If Range("A1").Value > Range("A2").Value Then         If Range("A3").Value <> "ブドウ追加" Then           Range("A3").Value = "ブドウ追加"           WaveFileName = "G:\着信ボイス\koke.wav"         End If       Else         Range("A3").Value = "在庫あり"       End If     ElseIf .Address = "$A$5" Then       If Range("A5").Value > Range("A6").Value Then         If Range("A7").Value <> "バナナ追加" Then           Range("A7").Value = "バナナ追加"           WaveFileName = "G:\着信ボイス\koke.wav"         End If       Else         Range("A7").Value = "在庫あり"       End If     End If   End With   If WaveFileName <> "" Then Call PlaySound(WaveFileName, 0&, SND_SYNC) End Sub

mensgoo
質問者

お礼

watabe007さん、回答ありがとうございます。 (以前も回答くれてますよね、感謝です)   もらった回答のものを貼り付けて、 WaveFileNameを変えて、A1の所へ4と入れてやってみたんですが、 A3のセルが在庫ありの表示から#NAME?に変わり、音も鳴りません。 ※通常なら、A1の所に4を入れると A3のセルがブドウ追加と表示が変わり、ブドウ追加音が鳴ります。

その他の回答 (5)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.6

>セルはそのままでいいんですもんね↓ >A3のセルの関数↓ >=IF(A1>A2,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") もう一度だけ言います。!! 私のUPしたコードではA3セルには関数は使いません A3及びA7の関数は消してください。 以下のコードをシートモジュールに貼り付けてください (シートモジュールが解らなければネットで調べてください。) Private Sub Worksheet_Change(ByVal Target As Range)   Dim WaveFileName As String   With Target     If .Count > 1 Then Exit Sub     If .Address = "$A$1" Then       If Range("A1").Value > Range("A2").Value Then         If Range("A3").Value <> "ブドウ追加" Then           Range("A3").Value = "ブドウ追加"           WaveFileName = "C:\Sound\ブドウ追加音.wav"         End If       Else         Range("A3").Value = "在庫あり"       End If     ElseIf .Address = "$A$5" Then       If Range("A5").Value > Range("A6").Value Then         If Range("A7").Value <> "バナナ追加" Then           Range("A7").Value = "バナナ追加"           WaveFileName = "C:\Sound\ブドウ追加音.wav"         End If       Else         Range("A7").Value = "在庫あり"       End If     End If   End With   If WaveFileName <> "" Then Call PlaySound(WaveFileName, 0&, SND_SYNC) End Sub

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.5

こんばんは 今、自宅PC WindowsXP Excel2002で確認しましたが こちらでは、問題なく動作しています。 一度、新規ブックで試されては如何でしょうか >A3のセルが在庫ありの表示から#NAME?に変わり、音も鳴りません。 関数名が正しくないために#NAME?というエラーがでているのです。 私のUPしたコードではA3セルには関数は使いませんが? Changeイベントをシートモジュールに貼り付けていますか?

mensgoo
質問者

お礼

watabe007さん、度々ありがとうございます。 セルはそのままでいいんですもんね↓ A3のセルの関数↓ =IF(A1>A2,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") うむむむ、新規でやっても#NAME?になってしまいます。。。 何度もチャレンジしてみます。凡ミスなどないかも再度確認します!

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

No.3です WaveFileName = "G:\着信ボイス\koke.wav"   ↓ファィル名を変更してくださいね WaveFileName = "C:\Sound\ブドウ追加音.wav"

mensgoo
質問者

お礼

watabe007さん、できました! 完全に凡ミスでした! ちゃんと1回鳴ったら、次はその数を超えても鳴りません! しかも、追加もできるし、音声もそれぞれ変えれる 完璧ですッ、、、本当にありがとうございます。 感謝感謝感謝です!良かったぁ、ホントにありがとうございます!

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>=IF(A1>A2,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") のような書き方で音を鳴らすのは、私のレベルでは理解できない。 質問の目的を誤解していたら無視してください。 ーー 別の方法で Sheet1のシートのChangeイベントで Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Or Address = "$A$2" Then If Range("A1") > Range("A2") Then Beep End If End If End Sub で A1セルの値がA2セルに値より大に変化したとき、Beep音を1回ならす、 ではダメなのであろうか。 Beepの行は Application.Speech.Speak "Currency Up" 'Range("C1").Speak など音声が聞こえるなどもできる。 For NextでBeep行を繰り回せば少し長い時間鳴る。 鳴ったままということはない。 ーー A1,A2の値が変化したにしても A2>A1の状態からA2<A1に変わったときだけ鳴らすことも 出来ると思う。A1,A2の値の大小関係が変化したときだけ鳴らすこと。 「大小関係が変化しない変化」では鳴らさないということ。 A1,A2の一回前の値を覚えて置けば出来そう。

mensgoo
質問者

お礼

imogasiさん、回答ありがとうございます。 >=IF(A1>A2,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") のような書き方で音を鳴らすのは、私のレベルでは理解できない。 上記は勿論、マクロがあっての話ですので。 あとBEEP音ではちょっとダメなので。 でも回答頂いただけでありがたいです。

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

私の環境で確認できないので、参考という事で... 一度、鳴らしたら、その音の名前を記憶しておき、前の名前と同じならパスします 名前を記憶するために、セルを一個使用します 仮に「A10」とします(都合が悪ければ変えてください) ------------------------------------------ Public Function PlayWave(ByVal WaveFileName As String) As String      ' @引数 WaveFileName : 再生する Wave ファイル名   ' 必ず長さ0の文字列を返す   if cells("A",10) <> WaveFileName then '追加     Call PlaySound(WaveFileName, 0&, SND_SYNC)     PlayWave = vbNullString     cells("A",10) = WaveFileName '追加   endif '追加 End Function -------------------------------------- 3行追加します ちょっと副作用があります 終了時にブックを上書きすると、最後の音の名前が残ってしまいます 上書きの前に「A10」を消すか Private Sub Workbook_Open()   cells("A",10)="" End Sub を、入れておくと、起動時に消してくれます

mensgoo
質問者

お礼

ASIMOVさん、少し訂正です。 ASIMOVさんの3行を入れて、 エクセルのA1部分に4と入れると A3の部分が#VALUE!に変わります。 通常なら、 エクセルのA1部分に4と入れると A3の部分がブドウ追加となり、ブドウ追加音が鳴ります。 ※再度、A1に4と入れたり、5と入れたりすると、またブドウ追加音が鳴ります。これを1回鳴ったら、2回目は鳴らないようにしたいんです。

mensgoo
質問者

補足

ASIMOVさん、回答ありがとうございます。 早速やってみたのですが、3行追加した時点で、 A3やA7の計算結果の部分(音が出る、出ない部分)が #VALUE!となってしまい、音も一回も出ない状態です。 A3やA7の計算結果の部分なので、A10をA3にしてダメでした。 (A10のままでもダメでした) たぶん、すごくもうちょっとって感じだと思うんですが、、、

関連するQ&A