映画のエンドロール観る派?観ない派?

エクセルで特定範囲内のセルを更新したら同じ行の別なセルに更新日が表示されるようにしたいです。
例えば、C3~E3のセルを更新したらB3に更新年月日を表示、C4~E4のセルを更新したらB4に更新年月日を表示、C5~E5のセルを更新したらB5に更新年月日を表示したいです。よろしくお願い致します。

A 回答 (4件)

No.2です。



空白とはC~E列すべてが空白としています。
↓のコードに変更してください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, cnt As Long
If Intersect(Target, Range("C:E")) Is Nothing Then Exit Sub
For i = Target(1).Row To Target(Target.Count).Row
If i > 2 Then
cnt = cnt + 1
If WorksheetFunction.CountBlank(Cells(i, "C").Resize(, 3)) = 3 Then
Cells(i, "B").ClearContents
Else
With Cells(i, "B")
.Value = Date
.NumberFormatLocal = "yyyy/mm/dd"
End With
End If
If cnt = 100 Then Exit For
End If
Next i
End Sub

※ 列全体のように膨大な行数を範囲指定してデータを消去してしまうと
「応答なし」の状態になると思いますので、列全体をしていしても100行でループをやめています。

これではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

返信遅くなり失礼致しました。有難うございました。

お礼日時:2017/01/16 19:47

補足より。


更新の意味をお聞きしたのですが、コメントないのでそのままにしています。
何でも入力でいいなら、他回答者様のコードで出来ると思います。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim nvalue As Variant
If Intersect(Target, Range("C3:E5")) Is Nothing Then Exit Sub
If Range("C" & Target.Row) = "" And Range("D" & Target.Row) = "" And Range("E" & Target.Row) = "" Then
Range("B" & Target.Row).Value = ""
Exit Sub
End If
nvalue = Target.Value
Application.EnableEvents = False
Application.Undo
If Target.Value <> nvalue Then
Range("B" & Target.Row).Value = Date
Target.Value = nvalue
End If
Application.EnableEvents = True
End Sub
    • good
    • 1
この回答へのお礼

返信遅くなり失礼致しました。有難うございました。

お礼日時:2017/01/16 19:47

こんにちは!



VBAでの処理になります。
一例です。
操作したいSheetのシートモジュールにしてください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C:E")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Row > 2 And .Value <> "" Then
With Cells(.Row, "B")
.Value = Date
.NumberFormatLocal = "yyyy/mm/dd" '←表示形式は好みに!
End With
End If
End With
End Sub

※ 対象セルが3行目以降で動きます。尚、空白の場合は何もしていません。

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

こんにちは。早速教えて下さり有難うございます。
記載漏れしていたのですが、C~E列を空白にしたら、B列を空白にすることは可能でしょうか?

お礼日時:2017/01/16 10:16

更新されたらというのは「変更されたら」という意味にしましたので、同じ値を入れた場合は日付は入れていません。


C3〜E5の範囲で自動実行するイベントマクロです。
シートモジュールに記載して下さい。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim nvalue As Variant
If Intersect(Target, Range("C3:E5")) Is Nothing Then Exit Sub
nvalue = Target.Value
Application.EnableEvents = False
Application.Undo
If Target.Value <> nvalue Then
Range("B" & Target.Row).Value = Date
Target.Value = nvalue
End If
Application.EnableEvents = True
End Sub
    • good
    • 0
この回答へのお礼

こんにちは。早速教えて下さり有難うございます。
記載漏れしていたのですが、C~E列を空白にしたら、B列を空白にすることは可能でしょうか?

お礼日時:2017/01/16 10:47

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