私がやろうとしているのは、列に何かを挿入するときA
、B
または列に挿入/更新される現在の日付と時刻ですD
。 もちろん、私はすでにそれを行っていますが、列を除外したいのでC
、D
これらの列に何かが挿入されたときに日付/時刻が挿入/更新されるべきではありません。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1 Then Cells(Target.Row, "D") = Now()
End Sub
また、別のコードもありますが、一部の列を除外する方法がまだ見つかりません(日付/時刻の更新が機能する列の範囲を作成するため)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1, 1).Row > 1 Then
With Cells(Target(1, 1).Row, "D")
.Value = Now
.NumberFormat = "dd-mm-yyyy, hh:mm:ss"
End With
End If
End Sub
編集: これは私の最終コードです。
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Row > 1) And (Target.Column = 1) Then
With Cells(Target.Row, "D")
.Value = Date
.NumberFormat = "dd-mm-yyyy"
End With
End If
If (Target.Row > 1) And (Target.Column = 2) Then
With Cells(Target.Row, "E")
.Value = Now
.NumberFormat = "dd-mm-yyyy, hh:mm:ss"
End With
End If
End Sub
答え1
行条件に加えて、列 A と B が満たされる条件を追加します。
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Row > 1) And ((Target.Column = 1) Or (Target.Column = 2)) Then
'Cells(Target.Row, "D") = Now()
With Cells(Target.Row, "D")
.Value = Now
.NumberFormat = "dd-mm-yyyy, hh:mm:ss"
End With
End If
End Sub
これで、これら 2 つの列が編集された場合にのみ日付が挿入されるようになります。
答え2
確認する必要があるもの:
- 行は1ではありません
- 列は1または2です
- ターゲットは単一細胞
そして多分
- 現在の行の列Dは空です
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1 _
And Target.Column <= 2 _
And Target.Cells.Count = 1 Then
Cells(Target.Row, "D") = Now()
End If
End Sub
このコードは、1 つ以上のセルを含む範囲をコピーして貼り付ける場合には機能しません。
答え3
これを試してみてください:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
r = Target.Row
c = Target.Column
If r > 1 And (c = 1 Or c = 2) Then
If Cells(r, "C") = "" And Cells(r, "D") = "" Then
Application.EnableEvents = False
Cells(r, "D") = Now()
Application.EnableEvents = True
End If
End If
End Sub
これにより、必要なすべての条件がテストされます。