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

解決済みの質問

EXCEL VBA Worksheet Chang

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

投稿日時 - 2014-12-31 15:11:08

QNo.8875909

困ってます

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

こんにちは!

セル変化が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

投稿日時 - 2014-12-31 17:24:28

お礼

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

投稿日時 - 2014-12-31 19:07:01

ANo.2

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

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

回答(2)

ANo.1

Wの列に更新Timeスタンプが上書き更新でないのでしたら

IF Cells(Target.Row, "W") = "" Then
Cells(Target.Row, "W") = Now
End if

にするとか

投稿日時 - 2014-12-31 15:53:49

お礼

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

投稿日時 - 2014-12-31 19:04:44

あなたにオススメの質問