重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

インターネット上にあった 下記のVBプログラムをエクセルで使用しているのですが、
セルの変化を数値入力後、「エンター」を押さなければ認識しません。

『 ='Sheet2'!N13 』のように他のシートから数値を取り、その変化で、
メッセージボックスを起動させたいのですが、上手くいかないのです。

何方か、対処方法、宜しく御願いします。



次のサンプルは、値を変更したセルがセルA1~B5に含まれる場合にのみ、
メッセージボックスを表示します。
対象とするワークシートのシートモジュールに記述してください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:B5")) Is Nothing Then
Exit Sub
Else
MsgBox "セルの値が変更されました"
End If
End Sub

A 回答 (3件)

こんばんは。



少し、質問に疑問があります。
>『 ='Sheet2'!N13 』のように他のシートから数値を取り、その変化で、
>メッセージボックスを起動させたいのですが、上手くいかないのです。

>セルの変化を数値入力後、「エンター」を押さなければ認識しません。
これって、Sheet2のN13が自動的に、値が変動するのでしょうか?
言い換えると、Enterなしで、イベントを感知するものではありませんか?

私の勘違いでなければ、かなり、昔からある質問です。Microsoft にも載っていた質問です。昔ですと、DDEから入ってくる値を監視するという類のものです。
今は、ActiveX コントロールにそういうものがありますね。

そういう場合は、Class 側から、新しいイベントを作ってあげ、APIタイマーで常に、セルを監視するそうです。しかし、古い方法(2000以降)の方法としては、=Now()を見えない所に置き、Worksheet_Calculateイベントを取ります。2000より以前ですと、OnCalculate メソッドを使っていました。

どういうものか、もう少し詳しく教えてください。
もし、私の書いている内容が的外れなら、無視して構いません。
    • good
    • 0
この回答へのお礼

DDE、ActiveX コントロール、まだ、不勉強な未知の領域のものなので、
セルや値の変化をどのように処理しているのか、申し訳ない状態なのですが、

今回の事で、計算式によって起動するものと、セルの変化によって起動する
ものがあることを理解しました・・・

現状は、Worksheet_Change をWorksheet_Calculate に変化させ、
無事、起動しております。画面の左下の準備完了の表示が繰り返し、点滅するため、
プログラムが絶えずセル、計算式の変化の監視状態にあるのかもしれませんが、
この件に関しての不具合、負荷などがなければ何とかなりそうです。

コメントありがとうございました。

お礼日時:2015/01/23 10:29

シート2のN13の値変更でシート1にメッセージを表示したいというのであれば下記方法で可能です。



sheet2のシートモジュールに下記をコピペで可能です。
シートモジュールと標準モジュールの違いを理解して下さい。
http://vbae.odyssey-com.co.jp/column/no15_1.html
上記サイトに記載していますが、VBAprojectのsheet2をWクリックするとsheet2のシートモジュールが表示さます。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("N13")) Is Nothing Then
Exit Sub
Else
Worksheets("sheet1").Activate
MsgBox "セルの値が変更されました"
End If
End Sub
    • good
    • 0
この回答へのお礼

オブジェクト、フォーム、モジュール、それぞれの知識に曖昧な部分があり、いざ、プログラムを走らせるとデバックを必要とされることが多々あるのですが、参考となりました。このまま使用出来そうなので、助かりました。ありがとうございます。

お礼日時:2015/01/23 09:21

Private Sub Worksheet_Changeで取得するTargetは実際に変更したセルになります


質問の内容であれば'Sheet2'!N13がTargetセルになります

参照元と参照先の関係はややこしいのですが

http://veaba.keemoosoft.com/2012/12/233/

これが参考になれば
    • good
    • 0
この回答へのお礼

大変参考になりました。

まだ、数式と値の変化の読み取りに関して、認識がなく
混乱しておりました。

ありがとうございます。

お礼日時:2015/01/23 09:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!