• ベストアンサー

【EXCEL】セルの値の変化をトリガーにしてマクロを自動実行したい

お世話になります。困っておりまして、もしよろしければ、ご助言いただけませんでしょうか? 【質問】 EXCELでVBA等を使って下記のことは実行可能でしょうか? (下記の1~3の方法はわかっていますが、知りたいのは4の部分です。) 0.(前提として)エクセルはOpenされた状態。 1.特定のセルの値は外部参照で一定時間毎に変化している。 2.そのセルの値を使って別のセルで数式計算 3.計算結果がIF条件に合致するかどうか判断 4.3の条件に合致したら、自動で登録済みのマクロ を実行する。 (なお、ExcelのXPでできれば望ましいですが、それ以外のバージョンでできるようでしたら、それでもかまいません。) よろしくお願いいたします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

Excel2000ですが、、、 リンクされたセルの値変化に対しては Worksheet_Change は発生しないようです。 Calculateは発生するようなので、Calculateを使われてはどうでしょう?  Book1とBook2を同時に開き、  Book2のA1に =[Book1]Sheet1!$A$1  Book2のA2に 5  Book2のA3に =SUM(A1:A2) として、Book2のSheet1 を下記のようにした場合は、Book1のSheet1!A1 に6を入れるとメッセージが出ました。 Private Sub Worksheet_Calculate()   If Sheet1.Cells(3, 1).Value > 10 Then Call myMsg End Sub Sub myMsg()   MsgBox "マクロ実行" End Sub

offyakiniku
質問者

お礼

ご回答いただきありがとうございます。検討した結果、Calculateが自分の要望にあいそうです。試してみます。

その他の回答 (2)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

1.「実行」「停止」ボタンを用意。 2.「実行」ボタンを押されたら3.のマクロを実行する。 3.あるセルに"実行中"と設定し、  そのセルが""になるまでループ ループの中でDoEventを使用、  その後に、計算・条件判断・マクロ実行 4.「停止」が押されたら、"実行中"セルを""に。 こんな感じでも出来ます。 Worksheet_Changeでも、出来ると思いますが・・

offyakiniku
質問者

お礼

ご回答いただきありがとうございます。検討した結果、Calculateが自分の要望にあいそうです。試してみます。

noname#18558
noname#18558
回答No.1

質問のタイトルと、内容が一致しないような気がするんですが、 セルの値が変化したときは、 VBAのWorksheet_Changeイベントが発生するので、そこに処理を記述してはどうですか。

offyakiniku
質問者

お礼

ご回答いただきありがとうございます。検討した結果、Calculateが自分の要望にあいそうです。試してみます。

関連するQ&A

  • セルの値が変ると自動でマクロが実行される。

    セルの値が変ると自動でマクロが実行されるVBAを教えて下さいm(_ _ )m 例えば、シート1のA1の値が変ると、マクロAが実行される。 シート1のA2の値が変ると、マクロBが実行される。 と一つのシート内に複数のイベントを設置したのですが、イマイチわかりません。 知恵をお貸し下さい。

  • セルの値が●ならば▲のマクロを自動で実行

    エクセルで、セルの値が●ならば▲のマクロを自動で実行するということはできるのでしょうか? セルの値が●月(TODAY関数)なら、自動的に置換をするように設定したいのです。

  • マクロの自動実行などについて

    エクセル2003のVBAマクロについて質問です あるワークシートに値が入力されたら、マクロを自動実行するように出来ないでしょうか? 又、そのセルの値を別のセルにコピーしたいのですが、データを入力する度にセルの場所が ひとつ下へずれます。この最終列のセルの値を必ず拾うようにするにはどうすればよいでしょうか? ややこしくてすいません

  • ある条件でマクロの実行?

    エクセルの素人です。 あるセルの値がクエリをつかって一定間隔で自動更新されているのですが、その値がある条件を満たしたときに(たとえば10以上になったら)マクロを実行させることは出来るんでしょうか? もしくは、そのセルの値が更新されるたびにマクロを実行させることは可能でしょうか? よろしくお願い致します。

  • エクセルでセルの値が変更されたらマクロを実行

    エクセルで、セルの値が変更されたらマクロを実行したいと考えています。 具体的には、A1のセルに何か値が入力されるか、変更されたら、 作成したマクロを実行したいと考えています。 どうしたらいいのでしょうか。 ご教授ください。 よろしくお願いします。

  • マクロを実行中にセルの操作をすることは可能?

    エクセルVBAでテトリスを作ろうと思うのですが マクロを実行中にセルの操作をすることは可能なのでしょうか? どうもマクロ実行中はフリーズするようなのですがこれは仕様でしょうか?

  • エクセルVBAで設定したセルの値

    エクセルVBAについての質問です。 例えば、A1とB1のセルの値を参照している数式がC1セルに設定してあるとします。 さらに、D1のセルにはC1の値を参照している数式が設定してあるとします。 VBAでA1、B1のセルの値を変更したとします。 次のステップのVBAでC1、D1のセルを参照すれば、A1、B1の変更が反映された後の正しい値である C1、D1の値が取得できるのでしょうか? できて当たり前だと思うのですが、セルに設定してある数式が大変複雑であったりすると、ちゃんとA1、B1の変更が反映された正しいC1、D1セルの値がVBAで取得できるのかちょっと不安です。 ばかな質問かもしれませんが、回答をよろしくお願い致します。

  • エクセル:シート1のセルA1が0でなければ任意のマクロを実行したい

    エクセルマクロ(VBA)初心者です。よろしくお願いします。 (1)エクセルのsheet1のセルA1の値が”0(ゼロ)”でなければ、そのシート上で任意のマクロを実行し、ゼロであれば実行せずにsheet2へとぶ (2)同じようにsheet2のセルA1がゼロでなければ実効し、ゼロでなければsheet3へとぶ・・・の繰り返し(sheet50まであります。) このようなマクロ(標準モジュール)の書き方を教えてください。 よろしくお願いいたします。

  • ”戻り値”が変化したときに、マクロを実行したい

    超初心者です。 セルの値が変化したときにマクロが実行されるようなものを作りたいです。 セルに入力されているのは、”関数”です。 なので、関数の”戻り値”が変化したときにマクロを実行したいのです。 今は、戻り値が変化しても式自体が変わっていないため マクロが実行されません。 (セルの式を切り取ってもう一度貼りなおせば、マクロは実行される) ちなみに今は Private Sub Worksheet_Change(ByVal Target As Range) で書いています。 まずVBAの勉強をしろと言われてしまいそうですが><; 何卒アドバイスのほどよろしくお願いいたします!

  • EXCELでセルの値が変化したときだけにマクロ実行

    教えてください。 EXCELのA1セルの値が1→0に変化したときにMacro1を実行、0→1に変化したときにMacro2を実行したいと思い、以下のマクロを「シート名タブ右クリック」→「コードの表示」で開く画面に打ちました。 そうしたところキーボードからA1セルに1や0を打ち込むとMacro1・Macro2を実行するのですが。A1セルに関数式を入れ自動で1→0・0→1に変化してもMacro1・Macro2が実行されません。この場合どう修正すればMacroが実行されるようになりますか? ※ちなみにA1セルの関数式はある条件を満たしたら1、そうでない時0という式です。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" And Target.Value = 0 Then Macro1 End If If Target.Address = "$A$1" And Target.Value = 1 Then Macro2 End If End Sub

専門家に質問してみよう