• ベストアンサー

計算結果で音が鳴らず困っています、、

こちらで、ご教授してもらったものを使わせて頂いているのですが、 どうしてもうまくいかないことが出て、行き詰まってしまい、、、 皆さん、度々すいませんが手助けできましたらお願いします。 エクセルのセルの結果表示のところで、 在庫追加となったら音がなるようにしたいのですが、 手打ち(コピペなど)で結果表示の所に (例えばA3に)ブドウ追加と入れると指定した音が鳴ります。 ですが、結果表示の所は関数にしてて 計算結果によって(ブドウ追加って答えが出たら) 音が鳴るようにしたいのですが、音が鳴らなくて困っています。 A1の所が、ブドウ注文数4個になると、A3は"在庫あり"から"ブドウ追加"となるので 音が鳴るはずなんですが、鳴らないんです、、、 また、複数同時に結果表示が変わっても(ブドウ追加とバナナ追加が同時に起こっても)音が鳴るようにしたいのですが、少しイジるも、うまくいかず、やれるのかどうかもわかっていません。 Excel2003のBOOK1の中で セル A1 ブドウ注文数2個 A2 ブドウ在庫数3個 A3 =IF(A1>A2,"ブドウ追加","在庫あり")(←結果表示) A5 バナナ注文数2個 A6 バナナ在庫数3個 A7 =IF(A5>A6,"バナナ追加","在庫あり")(←結果表示) A9 トマト注文数2個 A10 トマト在庫数3個 A11 =IF(A9>A10,"トマト追加","在庫あり")(←結果表示) A13 ミカンなど続いていきます・・・。 A14 ・・・・・・・ A15 ・・・・・・・ ----------↓現在、教えてもらったものを少しイジった状態です↓--------- 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     '一度に複数のセルの値が変化した時はExit     If .Count > 0 Then Exit Sub     '変化したセルがA3,A7,A11の範囲に無ければExit     If Intersect(.Cells, Range("A3,A7,A11")) 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"       End Select     End With End Sub

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.10

横レス失礼します。 今までの流れとは違ったアプローチになり恐縮ですが、以下の方法を 試してみて下さい。 1)Worksheet_Change イベントは削除します 2)標準モジュールに下部※以下のユーザー定義関数を貼り付けます 3)A3 に入力する数式 =IF(A1>A2,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") ユーザー定義関数をワークシートで使用した場合、ユーザー定義関数内に 書かれた Excel の操作コマンドは全て無効化されてしまいますが、 今回のように「サウンドを鳴らす」など Excel とは無関係なコマンドは 無効化されません。この特性を利用します。 Wave 再生に都度 MediaPlayer を起動するのでは、コストが高すぎるので、 PlaySound API を使用しました。同期再生させてますので、恐らく RSS から いくつかのセルが同時入力(正確には若干のタイムラグがあるはず)されても、 順次再生されていくのではないかと。 実際には試してない(試す環境がない)ですけども・・・ ' ※以下標準モジュールに貼り付けるユーザー定義関数 ' // Wave ファイルを再生する API ' // 複数の WAV の同時再生はできない。同期再生の場合は、 ' // 再生終了まで一切の操作ができない。 ' Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _     ByVal lpszName As String, _     ByVal hModule As Long, _     ByVal dwFlags As Long) As Long Private Const SND_SYNC As Long = &H0 ' 同期再生 Private Const SND_ASYNC As Long = &H1 ' 非同期再生 Private Const SND_PURGE As Long = &H40 ' 再生停止 ' // Wave ファイルを再生する. ' Public Function PlayWave(ByVal WaveFileName As String) As String      ' @引数 WaveFileName : 再生する Wave ファイル名   ' 必ず長さ0の文字列を返す      Call PlaySound(WaveFileName, 0&, SND_SYNC)   PlayWave = vbNullString End Function

mensgoo
質問者

お礼

KenKen_SPさん、、、、 エクセレントです!!!凄い!!! 下記の悩んでいる点、3つ、すべて解決しましたッ 1.関数をかましても音が鳴るようにできたら最高です! 「鳴ります!」 2.結果表示によって音が振り分けられたら、もっと最高なんです! 「いくつでも振り分けられます!」 3.結果表示が同時に起こっても、音が2つ鳴る、もしくは結果表示が2つ以上出たよ音が指定できたら、パーフェクト!! 「ご指摘通り、3つ同時に結果を出してテストした所、3つ別々の音がズレながらすべて鳴りました!」 RSSの自動取得はまだわかりませんが、多分大丈夫っぽいです。 『素晴らしい』としか言いようがありません。 感無量過ぎます、、感謝感激の乱れ打ちです、、 本当に本当にありがとうございます! ここまで来れたのは、皆さんの力なくしては絶対ありえなかったことで、KenKen_SPさんの感謝の意を伝える所で、マナーがなっていないのは重々承知していますが、xls88さんが凄く力を貸してくれて、頑張ってこれたのは間違いありません。 xls88さん筆頭に、KenKen_SPさん、watabe007さん、imogasiさん、cistronezkさん、Trick--o--さん、nagareさん、全員のおかげだと思っています。 本当にありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (10)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.11

>回答番号:No.9 この回答へのお礼 希望が叶いそうで良かったです。 私も上級者の技に触れることができ嬉しいです。 暇をみてKenKen_SPさんのコードを研究させていただきます。

mensgoo
質問者

お礼

そう言って頂けるとありがたいです! 長い間、本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.9

>※A1の関数をなくし、例えば数字の5を手打ちすると音が出ます! 回答番号:No.4でも書きましたが Rss入力されるのはB列ですから、B列をTargetに改編すべきです。

mensgoo
質問者

お礼

xls88さん、何度も何度も、長い時間、人生の貴重な時間を割いて頂き、ホントに本当に感謝しています。 KenKen_SPさんの回答、そしてレスを見て頂ければ、と思います。 この質問をしてから、皆さんの回答すべてが参考になり、 勉強になり、その中でも最後まで諦めず、答えを探してくれた xls88さん、 『最高です!ありがとうございました!』 (同じ言葉しかでず、すいません)

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.8

A列の結果表示セルにwavファイル名その物が表示されるなら Select Case文を使わず、直接セルの値を変数に代入すれば良いと思います。 wavfile = .Offset(2).Value で、wavファイル名を取得できることになります。

mensgoo
質問者

補足

なるほど、参考になり、もの凄く勉強になります!」 (知識が違い過ぎて、感心するばかりです、、) あと 言い尽くされた言葉かもわかりませんが、Excel、奥が深いですね、、

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.7

>ブドウ追加音で間違いないです。 Select Case文でwavファイル名をセットしています。 正しいファイル名に書き換えて、変数を使えるようにしてください。 Select Case True Case .Offset(2).Value Like "*ブドウ追加*": wavfile = "ブドウ追加音"  ・  ・(他のファイル名も正しく書き直す)  ・  End Select

mensgoo
質問者

補足

xls88さん、なるほど、変数理解したというか、はい、 しっかり書きました。エラーなくちゃんと動作しています! (音は鳴りませんが、A1に手打ちすると鳴ります) Private Sub Worksheet_Change(ByVal Target As Range) Dim wavfile As String With Target '一度に複数のセルの値が変化した時はExit If .Count > 1 Then Exit Sub '変化したセルがA1の範囲に無ければExit If Intersect(.Cells, Range("A1")) Is Nothing Then Exit Sub Select Case True Case .Offset(2).Value Like "*ブドウ追加*": wavfile = "ブドウ追加音" End With If wavfile <> "" Then Shell "mplay32.exe /play /close c:\サウンド\" & wavfile & ".wav" End If End Sub --------- Excel2003の状況↓ A1 SUM=b1-b2(関数) A2 ブドウ在庫数3個(固定数字) A3 =IF(A1>A2,"ブドウ追加","在庫あり")(←結果表示) B1 手打ちで5 B2 手打ちで1 ※A1の関数をなくし、例えば数字の5を手打ちすると音が出ます!

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.6

今までの内容で、手打ち入力でChangeイベントが作動するのは確認済みです。 RSSによるデータ入力が無ければテストは無意味です。 代替え環境が用意できますか? できなければRSSによる自動入力があるまでに、手打ち入力で上手く動くように整備しておけばどうでしょうか。 >手打ちでB1かB2に数字を入れると(他のセルに何か入れても) >動いています!とメッセは出ますが、音は出ません。 A1にTargetを限定しているのだから当然の結果です。 '変化したセルがA1の範囲に無ければExit If Intersect(.Cells, Range("A1")) Is Nothing Then Exit Sub あと、気になるのは >Shell "mplay32.exe /play /close c:\サウンド\ブドウ追加音.wav" 何故、wavファイル名に変数を使わないのですか? それから wavファイル名が、「ブドウ追加音」となっています。 提示例なら、今までは、「ブドウ」のはずでした。 根本的なことを途中で変えると混乱の元です。 真のファイル名はどうなっているのですか? 自分で応用されているなら無問題です。

mensgoo
質問者

補足

xls88さん、またもや本当にありがとうございます。 >RSSによるデータ入力が無ければテストは無意味です。 代替え環境が用意できますか? できなければRSSによる自動入力があるまでに、手打ち入力で上手く動くように整備しておけばどうでしょうか。 そうですね、確かに自動入力がないので 中途半端な感じなんですが、最初は自動でも手動でも とにかくターゲットとしてるセルの文字表示が変われば 音は鳴るだろうと、容易に考えていましたので。。 >あと、気になるのは >Shell "mplay32.exe /play /close c:\サウンド\ブドウ追加音.wav" 何故、wavファイル名に変数を使わないのですか? すいません、恥ずかしながら変数を理解してるに至らず、 最初にxls88さんにご教授してもらったものを音声ファイル名を少し変えてやってみたものの、音が鳴らず、上記のようにしたら鳴ったので、良かった良かったと一安心してたんです。 >それから wavファイル名が、「ブドウ追加音」となっています。 提示例なら、今までは、「ブドウ」のはずでした。 根本的なことを途中で変えると混乱の元です。 真のファイル名はどうなっているのですか? 自分で応用されているなら無問題です。 すいません、ブドウ追加音で間違いないです。 ※単にブドウというファイル名もあり、ブドウ追加発注音や ブドウ大至急音、など色々あって、、、すいません。 ここまでやってもらい、ホントに感謝感謝でいっぱいです! とりあえず、今から再度色々イジって、xls88さんに教えてもらったリンクも参照しながら、諸々やってみます。

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.5

>回答番号:No.4 この回答への補足 >つまり、 >A1 SUM=b1-b2(関数)のb1-b2の所は自動的に取得する数値なんです。 ということは、Targetをb1-b2のようなセルにやってみたがChangeイベントが発生しなかったということですか? イベントは発生しているが、音が出なかった、というようなことはないでしょうか? コード内の1行目に Msgbox "動いています!" とでも入れてみればどうなりますか? メッセージが出ればChangeイベントは発生していることになります。 あと過去ログを紹介しておきます。 Wendy02さんの回答が参考になるかもしれません。 エクセル マクロについて http://oshiete1.goo.ne.jp/qa4651304.html >これ以上xls88さんに頼るわけにもいきませんし、・・・・・ 投稿された質問をスキルアップの題材にしています。 勝手にやっていることですからご心配なく、逆にスキル不足でご迷惑かもしれませんがご容赦願います。

mensgoo
質問者

お礼

xls88さん、やってみました。 下記の通りです。 xls88さんにご教授してもらったものを少しイジり 下記にしました。 手打ちでB1かB2に数字を入れると(他のセルに何か入れても) 動いています!とメッセは出ますが、音は出ません。 ------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim wavfile As String MsgBox "動いています!" With Target '一度に複数のセルの値が変化した時はExit If .Count > 1 Then Exit Sub '変化したセルがA1の範囲に無ければExit If Intersect(.Cells, Range("A1")) Is Nothing Then Exit Sub Select Case True Case .Offset(2).Value Like "*ブドウ追加*": wavfile = "ブドウ" End Select End With If wavfile <> "" Then Shell "mplay32.exe /play /close c:\サウンド\ブドウ追加音.wav" End If End Sub ------------- Excel2003の状況↓ A1 SUM=b1-b2(関数) A2 ブドウ在庫数3個(固定数字) A3 =IF(A1>A2,"ブドウ追加","在庫あり")(←結果表示) B1 手打ちで5 B2 手打ちで1 ※A1の関数をなくし、例えば数字の5を手打ちすると メッセも音も出ます! ※土曜は午前まで、日曜は商店が休みなので自動でRSSが送られることがないので、手打ちしかできない状態です。

mensgoo
質問者

補足

xls88さん、度々申し訳ありません。 さらに返事が遅れてしまいすいません。 近所の本屋さんにExcelVBAの本を読みあさりに行っており、 ただいま帰ってきました(^_^;) 下記の件、早速やってみて、再度報告します! (スキルアップの題材、優しい嘘か誠かわかりませんが、 そう言って貰えると本当にありがたいです!) >イベントは発生しているが、音が出なかった、というようなことはないでしょうか? コード内の1行目に Msgbox "動いています!" とでも入れてみればどうなりますか? メッセージが出ればChangeイベントは発生していることになります。

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

回答1でも書きましたが、数式の計算結果を、Changeイベントでは捕捉出来ないようです。 ただし、私のレベルでは断定できません。鵜呑みにしないでください。 そこで、Changeイベントを使うなら、手入力されるセルをTargetにする必要があります。 他にもあるかも知れませんが、コピーされる場合もChangeイベントが発生するのでOKです。 >A1 SUM=b1-b2(関数) >A2 ブドウ在庫数3個(固定数字) >A3 =IF(A1>A2,"ブドウ追加","在庫あり")(←結果表示) この場合、B1あるいはB2には手入力されるのでしょうか? それなら If Intersect(.Cells, Range("A1,A5,A9")) Is Nothing Then Exit Sub の部分を書き換えれば良いことになります。 A3から値("*ブドウ追加*")を取る部分も考え直さなければなりません。 >回答番号:No.3 この回答への補足 上記のようなことで良ければ 問題点は3つともクリアできます。 まず、1と2を片づけてから3に取り組みましょうか。 今まで寄せられた、皆さんのアドバイスでやれると思いますからひとまず頑張ってみてください。 出来なければ遠慮なく捕捉相談してください。 余談ですが 自分で応用してやろうという姿勢は称賛に値します。 上から目線ですみません。

mensgoo
質問者

補足

xls88さん、本当にありがとうございます! 貴重なお時間を割いて頂き、本当に感謝しております。 A1 SUM=b1-b2(関数)の、 源泉、元になる数字の部分なんですが、 手入力ではなく、自動的に数字が変わるんです。 当方、野菜も扱う果物屋をやっており、受注や在庫チェックに使うために作成しようと思っているんですが(余談です) 商店(大元)のほうから、注文が自動的にrssを通じて送られてくるんです。 それに対してExcelをつなげると、b1及びb2の数値が自動的に変わり、 それに連動して、A1の数値も当然のごとくコロコロ変わります。 つまり、 A1 SUM=b1-b2(関数)のb1-b2の所は自動的に取得する数値なんです。 最初は本当に1つヒントでも教えてもらったら、後は応用していくらでもいける!と知識も薄いのに容易に考えていましたが、、、 自動取得の数値を通して、結果を音で知らせたりするのは 相当難しいんですね。。 でもなんとか勉強してみます!これ以上xls88さんに頼るわけにもいきませんし、何より貴重なお時間を割くわけにいかないので、あとはスルーして頂ければ問題ありませんので。(本当にスルーで全然OKですから)

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

本分を読み返してみました。 >また、複数同時に結果表示が変わっても >(ブドウ追加とバナナ追加が同時に起こっても)音が鳴るようにしたいのですが、 この条件を全く考えていませんでした。 再考してみます。 因みに、全く同時に入力される方法はどうされているのでしょうか? よければ教えてください。

mensgoo
質問者

補足

xls88さん、本当にありがとうございます。 (つい先ほど、補足を入れて、今見たら回答数が増えてるのに気づき) >因みに、全く同時に入力される方法はどうされているのでしょうか? よければ教えてください。 ちょっとまとめますと、 今悩んでいる点は3つなんです。 1.関数をかましても音が鳴るようにできたら最高です! (一個前の補足に書いた感じです) 2.結果表示によって音が振り分けられたら、もっと最高なんです! (ブドウならブドウ音、バナナならバナナ音) 3.結果表示が同時に起こっても、音が2つ鳴る、もしくは結果表示が2つ以上出たよ音が指定できたら、パーフェクト!! 本見たら、グーグル検索で、教えてサイト参考にしたら比較的簡単にできると思ったら、、まったくできず、、 (xls88さんはじめ、その他答えてくださった皆さんのおかけでココまで辿り着けたようなものです)

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

>見事にできたんですが、 >ブドウはブドウの音、バナナはバナナの音、 >と各答えに関して、音を振り分ける設定を色々とやっているんですが、 >うまくいかず、試行錯誤中です。 振り分けるようになっているのですが、、、 そのままで使えませんか? 何が、「見事にできた」のでしょうか? 疑問です。 それから 何故、Shell関数のコードが2度も出てくるのでしょうか? 更に >Shell "mplay32.exe /play /close c:\サウンド\ブドウ.wav" & wavfile & "ブドウ" は書き方が間違っています。 本文で提示されたコード >Shell "mplay32.exe /play /close c:\サウンド\ブドウ.wav" で音は鳴っていると思います。 私が提示したコードでは 上記コードの「ブドウ」の部分ですが Select Case文で、条件にあった、wavファイル名(拡張子なし)を変数(wavfile)に格納しています。 そして SHell関数のコードで、フォルダのパスと拡張子の間に、&演算子で変数(wavfile)を入れ込んでいます。 Shell "mplay32.exe /play /close c:\サウンド\" & wavfile & ".wav" ですから修正する必要はなく、そのまま使えるはずです。

mensgoo
質問者

補足

xls88さん、すいません、言葉足らずでした。 (早々の回答、本当に感謝です) 見事に音は出るんですが、If wavfile <> "" Thenより下の部分は 下記の方法で音が出ました↓ If wavfile <> "" Then Shell "mplay32.exe /play /close c:\サウンド\ブドウ追加.wav" End If End Sub 困っている点が、答え(結果表示)によって音を振り分けるのに試行錯誤中です。 あと、A1,A5,A9に関数を入れてやると音が出ないところなんです。 ↓こうやると音が出なくなります。関数を入れてるからなんですが。。どうにか鳴らないかなぁと数時間頑張ってるんですが。。 A1 SUM=b1-b2(関数) A2 ブドウ在庫数3個(固定数字) A3 =IF(A1>A2,"ブドウ追加","在庫あり")(←結果表示)

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

'一度に複数のセルの値が変化した時はExit If .Count > 0 Then Exit Sub 変化したセルが、1つの場合もExit Subしてしまいます。 If .Count > 1 Then Exit Sub あるいは If .Count >= 2 Then Exit Sub としてください。 '変化したセルがA3,A7,A11の範囲に無ければExit If Intersect(.Cells, Range("A3,A7,A11")) Is Nothing Then Exit Sub 数式の計算動作は、Changeイベントでは捕捉出来ないようです。 Calculateイベントがありますが、Targetの特定が難しそうです。 そこで、注文数の入力セルをTargetにしてChangeイベントを使えばどうでしょうか。 Private Sub Worksheet_Change(ByVal Target As Range) Dim wavfile As String With Target '一度に複数のセルの値が変化した時はExit If .Count > 1 Then Exit Sub '変化したセルがA1,A5,A9の範囲に無ければExit If Intersect(.Cells, Range("A1,A5,A9")) Is Nothing Then Exit Sub Select Case True Case .Offset(2).Value Like "*ブドウ追加*": wavfile = "ブドウ" Case .Offset(2).Value Like "*バナナ追加*": wavfile = "バナナ" Case .Offset(2).Value Like "*トマト追加*": wavfile = "トマト" End Select End With If wavfile <> "" Then Shell "mplay32.exe /play /close c:\サウンド\" & wavfile & ".wav" End If End Sub あと、↓のコードですが >'変化したセルがA3,A7,A11の範囲に無ければExit >If Intersect(.Cells, Range("A3,A7,A11")) Is Nothing Then Exit Sub Targetが多いとRangeの指定が大変だとおもいます。 Mod関数で、Targetの行を特定するような方法を考えればどうでしょうか。

mensgoo
質問者

補足

xls88さん、回答ありがとうございます。 見事にできたんですが、 ブドウはブドウの音、バナナはバナナの音、 と各答えに関して、音を振り分ける設定を色々とやっているんですが、 うまくいかず、試行錯誤中です。 最後のほうの Shell "mplay32.exe /play /close c:\サウンド\ブドウ.wav" & wavfile & "ブドウ" Shell "mplay32.exe /play /close c:\サウンド\"バナナ.wav & wavfile & "バナナ" End If End Sub と、やってもできず、悩み中です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 計算結果で音を1回で止める方法を教えてください。

    以前、こちらで教えてもらったものを使わせてもらっているんですが、 これを少し改造したいんですが、色々イジってもわかりませんでしたのでご教授ください。 下記の式だと、A3やA7の計算結果で、注文数が在庫数を超えると セルの表示が変わり、各種設定した各フルーツ追加の音が鳴る設定なんですが、 例えばブドウ注文数4個になり、ブドウ在庫数3個を超えると セルの表示がブドウ追加となり、ブドウ追加!と音が鳴るんですが、 更にブドウが5個6個と追加されると、ずっとブドウ追加!と音が鳴り続けます。 これをブドウ追加!と音が鳴ったら、それでブドウ追加音は鳴らないようにしたいんです。 バナナが追加状態になった場合も、バナナ追加!と1回鳴って、 それ以降、バナナ追加が続いても音は終了と。 つまりA3やA7の計算結果1個につき、1回で音は終了にしたいんです。 ◆Excel2003のBOOK1の中で セル A1 ブドウ注文数2個(RSSによりランダムでリアルタイムで変わる) A2 ブドウ在庫数3個(固定数字) A3 =IF(A1>A2,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") A5 バナナ注文数2個(RSSによりランダムでリアルタイムで変わる) A6 バナナ在庫数3個(固定数字) A7 =IF(A5>A6,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") ◆標準モジュールに以下を書いています。 ' ※以下標準モジュールに貼り付けるユーザー定義関数 ' // Wave ファイルを再生する API ' // 複数の WAV の同時再生はできない。同期再生の場合は、 ' // 再生終了まで一切の操作ができない。 ' Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _     ByVal lpszName As String, _     ByVal hModule As Long, _     ByVal dwFlags As Long) As Long Private Const SND_SYNC As Long = &H0 ' 同期再生 Private Const SND_ASYNC As Long = &H1 ' 非同期再生 Private Const SND_PURGE As Long = &H40 ' 再生停止 ' // Wave ファイルを再生する. ' Public Function PlayWave(ByVal WaveFileName As String) As String      ' @引数 WaveFileName : 再生する Wave ファイル名   ' 必ず長さ0の文字列を返す      Call PlaySound(WaveFileName, 0&, SND_SYNC)   PlayWave = vbNullString End Function

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

    皆さん、すいません、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

  • 特定のセルの表示が変わったら音を鳴らしたい!

    例えばですが、 BOOK1シートのA1のセルの位置に「テスト」という文字が入ったら音を鳴らしたいんですが、下記でうまくいきません。 音は鳴るんですが、BOOK1のすべてのセルの何かが変われば音が鳴ります、、、 A1のみに対して音を鳴らしたいんです。 皆さん、どうかご教授お願いします! 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) If Cells(A1).Value >= "テスト" Then Shell "mplay32.exe /play /close c:\サウンド\テスト.wav" End Sub

  • VBAでMP3を鳴らしたい

    vbaについて質問です。 MP3ファイルを鳴らしたいのですがうまくいきません。 --------------------------------------------------------- Sub Macro1() Dim SoundFile As String SoundFile = "C:\終了音.mp3" If Dir(SoundFile) = "" Then MsgBox SoundFile & vbCrLf & "がありません。", vbExclamation Exit Sub End If Shell "mplay32.exe /play /close " & SoundFile End Sub --------------------------------------------------------- を実行すると、 「Shell "mplay32.exe /play /close " & SoundFile」 の部分で 実行時エラー53 ファイルが見つかりません。 になります。 しかし、 If Dir(SoundFile) = "" Then MsgBox SoundFile & vbCrLf & "がありません。", vbExclamation Exit Sub End If の部分では問題ないので、ファイルはある事になってると思うのですが、 なぜ「Shell "mplay32.exe /play /close " & SoundFile」の部分でエラーになるのでしょうか? スペックは、エクセル2007、windows7です。 ご回答よろしくお願いします。

  • エクセル2010で 項目の抜き出しをしたい

    エクセル2010で 項目の抜き出しをしたいです。 たとえば、A列に りんご りんご バナナ トマト りんご バナナ みかん トマト メロン バナナ リンゴ みかん ぶどう とデータが入っているとき、これらのデータには、 トマト バナナ りんご リンゴ みかん メロン ぶどう という種類のデータが入っているということを簡単に表示する方法が知りたいです。 どうぞよろしくお願いします。

  • A(必要数)-B(在庫数)の計算結果でB(在庫数)のほうが多ければ空白

    A(必要数)-B(在庫数)の計算結果でB(在庫数)のほうが多ければ空白、 B(在庫数)のほうが少なければ(A-B)の計算結果をセルに反映したい場合 どうすればいいのかを考えています。 =IF(B-A<A,"","(A-Bの計算結果)")としたいのですが、 どうすればできるのでしょうか?

  • (.NET)IF文の計算結果が思ったのと違う!?

    IF文でiとjの足す処理が括弧にくくられているので、きちんと足される思ったのですがラベルでの実行結果が0になります。 コード上は計算されているように見えるのですがなぜ計算されていないのでしょうか?計算できないとしたらIF文の中では計算処理ができないということでしょうか? 回答のほどよろしくお願い致します。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i, j i = 0 j = 0 If (i = i + 1) = 0 Or (j = j + 1) = 0 Then MessageBox.Show("+1") End If Label1.Text = i Label2.Text = j End Sub

  • 検索結果の出力方法について

    "001","Aさん","ぶどう", "001","Aさん","みかん", "001","Bさん","バナナ", "001","Bさん","イチゴ", "001","Cさん","スイカ", "001","Cさん","メロン", "002",・・・ "003",・・・ 例えば上記の様な検索用のログファイルがあり、”001”で検索した場合、今のところ極々単純に ━━━━━━━ │Aさん|ぶどう| ━━━━━━━ |Aさん|みかん| ━━━━━━━ |Bさん|バナナ| ━━━━━━━ |Bさん|イチゴ| ━━━━━━━ |Cさん|スイカ| ━━━━━━━ |Cさん|メロン| ━━━━━━━ ↑という感じで結果を出力させているのですが、 これを ━━━━━━━ |Aさん|ぶどう| |    |みかん| ━━━━━━━ |Bさん|バナナ| |    |イチゴ| ━━━━━━━ |Cさん|スイカ| |    |メロン| ━━━━━━━ 上記のように、同じ名前の結果が複数ある場合、それを統一して結果を表示させたいと考え、いろいろと悪戦苦闘してみましたが、どうしてもうまくいきません。 ログファイルには手を加えないという事を前提に、下のテーブルのような出力に なるような、構文の書き方がありましたら、是非教えてください。

    • 締切済み
    • PHP
  • SUMIFの計算結果が0

    ブック内に商品別のシートが数枚あり、 それを月別集計する別シートを作っています ■商品シート A   B   C    D    E 月日  商品  仕入  出荷  在庫 ↓出荷状況によって入力が増減します ■月別集計シート A1=TODAY()  B1=型式  C=在庫 ↓商品別に一覧で在庫表示させる A1には、今日の日時を表示(仕様) C=在庫セルにSUMIFで在庫数計算させているのですが、、、 計算結果が0になってしまいます =SUMIF('型式シート'!$A$1:$A$500,">=MONTH($A$1)",'型式シート'!$C$1:$C$500) -SUMIF('型式シート'!$A$1:$A$500,">=MONTH($A$1)",'型式シート'!$D$1:$D$500)   その月の全仕入から全出荷を引いて在庫計算させているのですが、 SUMIFの計算結果が0になってしまいます。 記述もしくは検索条件のやり方が違うのでしょうか? お手上げ状態です、、TT

  • 損益計算について

    こんにちは。 損益計算について、整理しているのですが、頭がこんがらがってきたので、質問させてください。 以下の考え方で、問題があるかどうかチェックして下さると助かります。 4月1日~30日までの計算 (1)4月1日時点での在庫(期首) A:みかん 10個 原価100円 合計1000円分の原価 B:りんご  20個 原価500円 合計10000円分の原価 C:ぶどう  70個 原価400円 合計28000円分の原価 【A+B+C合計】 在庫原価39,000円 数量100個 (2)4月15日に追加仕入れ A:みかん 20個 B:りんご  20個 C:ぶどう  20個 【A+B+C合計】 仕入額合計20,000円 数量60個 (3)4月30日時点での在庫(期末) A:みかん 15個(4月販売数15個) 合計1500円分の原価在庫 B:りんご  35個(4月販売数5個)  合計17500円分の原価在庫 C:ぶどう  40個(4月販売数50個) 合計16000円分の原価在庫 【A+B+C合計】 在庫原価35,000円 数量90個 上記のような環境の中で、4月の上代売上は70,000円だったとします。(A・B・Cそれぞれ上代1,000円統一) 【売上総利益を出したい】 A)上代売上:70000円 B)期首在庫:39000円 C)追加分:20000円 D)期末在庫:35000円 A-(B+C-D)=46000円という計算をしてしまいました。 でも何となく違うような気がします。どこが違うのかわかりませんが… 違う場合、間違いを指摘していただけないでしょうか。 よろしくお願いしますm(__)m

【GO:LIVECAST】配信時の遅延
このQ&Aのポイント
  • YouTube配信時にひどい遅延があります(40秒程度)
  • チャットコメントの反映はとても速いですが、遅延を短くする方法はありますか?
  • また、ライブセットが記録されない問題も発生しています。新規作成しても反映されません。
回答を見る

専門家に質問してみよう