Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2007)
特定セルの値を変更したら
投稿日時: 19/05/13 18:30:53
投稿者: FILETUBE

 こんばんは。
 
1つ教えて下さい。
E3,J3のセル(データの入力規則 リストにしてあります)の値が
変更になったら処理を実行したく、試しに下記のようなコードを書きましたが
"Change"が表示されません。
 
Private Sub Worksheet_Change(ByVal Target As Range)
    'E3,J3
    If (Target.Row = 3) And (Target.Column = 5 Or Target.Column = 10) Then
            MsgBox "Change"
    End If
End Sub
 
「特定セルの値が変わったら」イベント実行したいのですが
どのようなコードになりますか?
分かる方おられましたら、教えて頂けないでしょうか。
宜しくお願いします。
 

回答
投稿日時: 19/05/13 19:50:20
投稿者: もこな2

注目するイベントはよいとおもいますので、あとは「特定セル」であるかの判定ですね。
 
https://www.moug.net/tech/exvba/0050074.html
 
Private Sub Worksheet_Change(ByVal Target As Range)
    'E3,J3
    If Not Intersect(range("E3:J3"),Target)Is Nothing Then
            MsgBox "Change"
    End If
End Sub
 
みたいな感じでしょうか。
スマホからなので、テストしてません。ミスっていたらごめんなさい。

回答
投稿日時: 19/05/13 20:28:57
投稿者: WinArrow
投稿者のウェブサイトに移動

FILETUBE さんの引用:
 こんばんは。
 
1つ教えて下さい。
E3,J3のセル(データの入力規則 リストにしてあります)の値が
変更になったら処理を実行したく、試しに下記のようなコードを書きましたが
"Change"が表示されません。
 
Private Sub Worksheet_Change(ByVal Target As Range)
    'E3,J3
    If (Target.Row = 3) And (Target.Column = 5 Or Target.Column = 10) Then
            MsgBox "Change"
    End If
End Sub
 
「特定セルの値が変わったら」イベント実行したいのですが
どのようなコードになりますか?
分かる方おられましたら、教えて頂けないでしょうか。
宜しくお願いします。
 

 
 
まさか・・・とは思いますが・・・
どのモジュールに記述していますか?
 
IF文は、もっとわかりやすく書きましょう
If Target.Address(0,0) = "E3" Or Target.Address(0,0) = "J3" Then

投稿日時: 19/05/13 20:31:25
投稿者: FILETUBE

回答ありがとうございます。
E3とJ3のセルのみですが
Range(“E3:J3”)になるのでしょうか?

回答
投稿日時: 19/05/13 20:33:44
投稿者: simple

正常に動作しますよ。私の手元では。
 
(1)動作させたいシートのシートモジュールにそのコードを書いているんですよね。
   失礼とは思いながら、念のための確認です。
 
(2)もうひとつの可能性は、
Application.EnableEventsがFalseになっていないかという点です。
イミディエイトウインドウで
?Application.EnableEvents
として内容を確認してみてください。
 
Changeイベントでこれを使って、元に戻さないと、Falseになったままです。
Application.ScreenUpdatingなどは、プロシージャを抜けると、
自動でTrueに戻りますけどね。

回答
投稿日時: 19/05/14 07:14:51
投稿者: simple

思いつきで可能性を推測したコメントをしましたが、
本来の回答はこういうことでしたでしょうか。
(1)まず、イベントプロシージャー自体が動作しているかどうか、
   確認していますか?
(2)冒頭にブレークポイントを設定(STOPを挿入するでも可)し、
   ステップ実行する方法はご存じですね?
(3)もし、動いている場合。
   想定と異なる動きになっていないとしたら、それは何故なんですか?
   条件式はどのように判定されているのでしょうか。
 
というものだったでしょう。
いかがですか?

投稿日時: 19/05/14 08:06:38
投稿者: FILETUBE

 みなさん、回答ありがとうございます。
早速、1つずつ確認したいと思います。
 

投稿日時: 19/05/14 12:03:47
投稿者: FILETUBE

みなさん、ありがとうございました。
 
Private Sub Worksheet_Change(ByVal Target As Range)
 
   'E3,J3
  If Target.Address(0, 0) = "E3" Or Target.Address(0, 0) = "J3" Then
        MsgBox "Change"
   End If
End Sub
 
すいません、ご指摘通りの
標準モジュールにコードを書いていました。
 
該当シートに変更しましたらOKでした。
初歩的なことですいませんでした。