• ベストアンサー

ExcelのWorksheet_ChangeイベントのTargetについて

特定のセルに値が入力されたときに特定の処理をしたいのですが、入力されたセルのアドレスが特定のセル(例えばK1)かどうか判定する方法を教えてください。 よろしく!

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

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.3

すでに回答されていますが、他のセルの値を変更する場合でもChangeイベントは、その都度余計に走りますので、 EnableEvents = Falseであらかじめイベントの起動を切っておいた方がいいかもしれません。 Private Sub Worksheet_Change(ByVal Target As Range) 'イベントを無効にする Application.EnableEvents =False If Target.Address = "$K$1" Then  Range("A1").Value ="X"'(セルの値変更例) End If 'イベントを有効にする Application.EnableEvents = True End Sub なお、EnableEvents = Trueは必ず記述しないと、Excelアプリケーションのイベント無効の状態が持続されるので注意が必要です。

tiga-
質問者

お礼

ありがとうございます。 Application.EnableEvents =False の記述は、K1セルに入力して、入力した値でK1セルに値を代入するようなマクロで特に威力を発揮しますね。 非常に勉強になりました。

その他の回答 (2)

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

こんにちは。 Targetは複数の場合もあるので、 if Target.Cells(1,1).Address = "$K$1" then のようにするか、 for each r in Target  if r.Address = "$K$1" then   なんかの処理   Exit for  end if next r のようにループさせると良いです。

tiga-
質問者

お礼

ありがとうございます。 Targetが複数あるという場合は、今回該当しないような気がするのですが、 もし、そのような場合でしたら、あるいは、今後そのような処理になったとき参考にしたいと思います。 いろいろ勉強になります。

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

If Target.Address="$k$1" Then または If Target.Column=11 And Target.Row=1 Then ではどうでしょう。 Worksheet_Changeイベントは同一セルに使うと、循環状態になる恐れがあるので注意。

tiga-
質問者

お礼

ありがとうございます。 Addressプロパティ(?)で参照できるのですか。 やってみます。 ところで、循環状態になるというのは、例えばK1セルに値を入力してその値でK1セルの値を変更するような処理のことでしょうか? 今回は他のセルを変更するので問題ないと思いますが、上のような処理をすることも今後考えられます。 そんなときはどうすればいいんでしょうね。

関連するQ&A