• ベストアンサー

別々のセルで音を鳴らせる設定

皆さん、すいません、4つ下ぐらいのところで質問をした者ですが、 もう一つだけご教授ください。 先ほどは、 BOOK1の中で セルA1にテストという文字が入ったらテスト.wavが鳴る というものをしたくて教えてもらって、うまくいったのですが、 本当にやりたいのは下記のようなことなんです。 ※一つ教えてもらったら、応用していけると思ったんですが、力不足、知識不足で無理でした、、 BOOK1の中で セルA1にテストという文字が入ったらテスト.wavが鳴る セルA2にトマトという文字が入ったらトマト.wavが鳴る セルA3にバナナという文字が入ったらバナナ.wavが鳴る セルA4にブドウという文字が入ったらブドウ.wavが鳴る ご教授できましたら、お願いします。 ----------↓先ほど教えてもらったものです↓--------- (1)標準モジュールに Public Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long (2)シートモジュールのChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) With Target '変化したセルがA1以外ならExit If .Address <> "$A$1" Then Exit Sub '変化した値に"テスト"が含まれていなければExit If Not .Value Like "*テスト*" Then Exit Sub End With Shell "mplay32.exe /play /close c:\サウンド\テスト.wav" End Sub

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

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

Private Sub Worksheet_Change(ByVal Target As Range)   With Target     '一度に複数のセルの値が変化した時はExit     If .Count > 1 Then Exit Sub     '変化したセルがA1:A4のハインに無ければExit     If Intersect(.Cells, Range("A1:A4")) Is Nothing Then Exit Sub     Select Case True       Case .Value Like "*テスト*"         Shell "mplay32.exe /play /close c:\サウンド\テスト.wav"       Case .Value Like "*トマト*"         Shell "mplay32.exe /play /close c:\サウンド\トマト.wav"       Case .Value Like "*バナナ*"         Shell "mplay32.exe /play /close c:\サウンド\バナナ.wav"       Case .Value Like "*ブドウ*"         Shell "mplay32.exe /play /close c:\サウンド\ブドウ.wav"       End Select     End With End Sub

mensgoo
質問者

お礼

watabe007さん、前回も、今回もありがとうございます! 上の方が言ってる通り、他の皆さんが言ってる通り、 あえて答えを教えず、ヒントを与えるからあとは 自分で調べる、勉強して解決しなさい!という メッセージが含まれていたのは重々承知でした。 ここに質問する前には、自分なりに調べて、 これはどうしようもないって時だけ頼るようにしてるんですが、、、 watabe007さん、その他の皆さんに 甘えてしまって本当に申し訳ありませんでした。 でもまたまた助かりました!本当にありがとうございます! (もっともっと勉強します)

その他の回答 (4)

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

先ほどの質問のヒントで応用できなければねえ。 質問者はもう少し勉強しないと丸投げ要求になってしまう。 Beep音ならAPIを使わなくても、Beepで音が出ると思うが。 Sheet1のシートのChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) MsgBox Target.Address Select Case Target.Address '-- Case "$A$1" If Target.Value Like "*テスト*" Then MsgBox "テスト" Dim WrkSndFile As String WrkSndFile = "C:\Documents and Settings\All Users\Documents\My Music\Sample Music\Beethoven's Symphony No. 9 (Scherzo).wma" 'PlaySound WrkSndFile, 0, SND_ASYNC Shell "mplay32.exe /play /close " & WrkSndFile End If Exit Sub '-- Case "$A$2" If Target.Value Like "*トマト*" Then MsgBox "トマト" End If '-- Case "$A$3" If Target.Value Like "*バナナ*" Then MsgBox "バナナ" End If End Select End Sub ーー 曲は適当な.wmaの曲などで変えてください。 曲を探すのが、面倒で、A1セルしか設定して無いが、A1セルに「テスト」を含む文字を打ち込むと、私の場合は有名な曲が流れました。実際に曲が質問者のパソコンに無いとコピペして実行してもダメなことは判りますね。 お遊びです。 上記はA2,A3セルはMsgboxの表示だけ。 好きなように変えてください。

mensgoo
質問者

お礼

imogasiさん、またも回答ありがとうございます。 下記の回答にも書いたのですが、 簡単に答えを教えず、ヒントだけ。 それからは自分の力で頑張りなさい! そうじゃないと力がつかない、というのは 本当に理解しています。 丸投げ状態のような形になってしまい すいませんでした。 でもとてもとても参考になりました。 ありがとうございました!

  • nagare
  • ベストアンサー率33% (280/831)
回答No.3

If .Address <> "$A$1" Then Exit Sub を見落としてました A1~4用にしないといけませんね 論理演算子を使いましょう

mensgoo
質問者

お礼

nagareさん、またもやありがとうございます。 論理演算子ですね、 と、いっても全然わかってないので、調べてみます!

回答No.2

今回は、素直にIf・・ElseIf・・Else文などで >セルA1にテストという文字が入ったらテスト.wavが鳴る をコードにすればいいでしょう。 その方法は、前回の回答でみなさんが十分に示しています。

mensgoo
質問者

お礼

cistronezkさん、回答ありがとうございます。 >If・・ElseIf・・Else うむ~、難しいですが、調べて頑張ってみます

  • nagare
  • ベストアンサー率33% (280/831)
回答No.1

If Not .Value Like "*テスト*" Then Exit Sub End With Shell "mplay32.exe /play /close c:\サウンド\テスト.wav" これだと”テスト”以外の場合、Exitしてしまいます あと少しなので、がんばってください

mensgoo
質問者

お礼

nagareさん、回答ありがとうございます。 頑張ってみます!

関連するQ&A