こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

お世話になります。困っておりまして、もしよろしければ、ご助言いただけませんでしょうか?
【質問】
EXCELでVBA等を使って下記のことは実行可能でしょうか?
(下記の1~3の方法はわかっていますが、知りたいのは4の部分です。)

0.(前提として)エクセルはOpenされた状態。
1.特定のセルの値は外部参照で一定時間毎に変化している。
2.そのセルの値を使って別のセルで数式計算
3.計算結果がIF条件に合致するかどうか判断
4.3の条件に合致したら、自動で登録済みのマクロ
を実行する。

(なお、ExcelのXPでできれば望ましいですが、それ以外のバージョンでできるようでしたら、それでもかまいません。)

よろしくお願いいたします。

投稿日時 - 2006-01-18 18:58:45

QNo.1905067

困ってます

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

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

投稿日時 - 2006-01-18 20:58:40

お礼

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

投稿日時 - 2006-01-25 19:13:30

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

1.「実行」「停止」ボタンを用意。

2.「実行」ボタンを押されたら3.のマクロを実行する。

3.あるセルに"実行中"と設定し、
 そのセルが""になるまでループ
ループの中でDoEventを使用、
 その後に、計算・条件判断・マクロ実行

4.「停止」が押されたら、"実行中"セルを""に。

こんな感じでも出来ます。

Worksheet_Changeでも、出来ると思いますが・・

投稿日時 - 2006-01-18 19:21:57

お礼

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

投稿日時 - 2006-01-25 19:13:47

ANo.1

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

投稿日時 - 2006-01-18 19:03:37

お礼

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

投稿日時 - 2006-01-25 19:14:07

あなたにオススメの質問