Что я пытаюсь сделать, так это когда я вставляю что-то в столбец 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
EDIT: Это мой окончательный код.
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
Вам необходимо проверить:
- Строка не 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
Это должно проверить все требуемые условия.