• ベストアンサー

EXCELの条件付け書式からマクロの起動

あるセルの値が100以上になったとき、音を鳴らしたいと思います。 条件付け書式で、条件が満足したときマクロを起動させ、WAVを鳴らすことできればと考えました。 EXCEL2000を使用していますが、条件付け書式の中に、マクロの起動の項目がありません。EXCELの他のバージョンであれば、可能でしょうか? もし不可能な場合、VBAではできるのでしょうか? FOR ~ NEXTで特定のセルを監視させる無限ループをつくり、マクロを起動するやり方なら想像できるのですが、こと方法だとマシンの負荷が100%になってしまいます。 よろしくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> VBAPROJECT(BOOK1.XLS)→MICROSOFT EXCEL OBJECTS→THISWORKBOOK ちがいます。例えばSheet1であれば VBAPROJECT(BOOK1.XLS)→MICROSOFT EXCEL OBJECTS→Sheet1(Sheet1)です。 それからコードを Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If IsNumeric(Target) And Target.Value > 100 Then Beep End Sub に変更してください。先程のでは文字列を入力しても音が出てしまいました。

QAZ123
質問者

お礼

音が鳴りました。 目的が達成できました。 ありがとうございました。

その他の回答 (2)

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

珍奇な考えに陥っていると思います。 条件付き書式は データーー>条件ーー>条件つき書式ーー>書式 ですが、質問者の発想は データーー>条件ーー>条件つき書式ーー>書式ー>効果音 という書き方ですが 根源の「値」に戻って注目し ーーーデータ(その値)ーー>条件ーー>条件つき書式ーー>書式 | | ーーーデータ(値)ーー>条件---->効果音 と考えるべきです。 それでエクセルのセルの値が入力されたイベントを捉えなければならないが、エクセルVBAではChangeイベントしかない。 入力された値が、条件に合わない(合う)場合に、「マクロを起動させ」ではなくて、イベントの通知をもらって、値が条件に合うかどうかユーザーが判別し、WAVファイルをPLAYする、と考えるべきです。 でも質問の表現振りからプログラムに慣れてないと思うので、MSGBOXの表示ぐらいにしておいて、Changeイベントの癖を勉強してからにすべきでしょう。

QAZ123
質問者

お礼

イベントの勉強します。 回答ありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

ワークシートのチェンジイベントを使ったらどうでしょう? たとえばA1セルに100を超える値が入った場合にBeep音を鳴らします。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If Target.Value > 100 Then Beep End Sub

QAZ123
質問者

補足

イベントを使うのが初めてでよくわからないのですが、教えていただいたVBAを、次のところにそのまま貼り付けてみましたが、A1のセルに数値をいれても音が鳴りません。貼り付ける場所が違うのでしょうか? VBAPROJECT(BOOK1.XLS)→MICROSOFT EXCEL OBJECTS→THISWORKBOOK

関連するQ&A