• ベストアンサー

EXCEL VBA Worksheet Chang

EXCELのシートが変更されたらWの列に更新Timeスタンプをセットします。 Worksheet_Changeイベントに以下のように配置して動作させています。 Private Sub Worksheet_Change(ByVal Target As Range) Cells(Target.Row, "W") = Now End Sub この場合、行の挿入、削除の場合、挿入前、削除後の行が更新されてしまいます。 行の挿入、削除の場合に上記コードを実行させないようにするにはどうすればよいでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! セル変化が1セルの場合に実行したいのであれば Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Count = 1 Then Cells(.Row, "W") = Now() End If End With End Sub といった感じではどうでしょうか? ※ セル変化が複数セルに渡って消去・コピー&ペースト等ある場合 極端に多くのセルではないと思いますので、 上記コードの >If .Count = 1 Then の部分を >If .Count < 100 Then のように調整してみてください。m(_ _)m

k321201
質問者

お礼

回答ありがとうございます。 回答内容で思い通りに出来ました。 助かりました。 また、何かありましたらお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1747/2623)
回答No.1

Wの列に更新Timeスタンプが上書き更新でないのでしたら IF Cells(Target.Row, "W") = "" Then Cells(Target.Row, "W") = Now End if にするとか

k321201
質問者

お礼

回答、ありがとうございます。 上書き更新も有りなのです。 別の方の回答でうまく行きました。 また、お願いします。

すると、全ての回答が全文表示されます。