Excel — Автоматически вставлять текущую дату/время в ячейку

Excel — Автоматически вставлять текущую дату/время в ячейку

Что я пытаюсь сделать, так это когда я вставляю что-то в столбец 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. Столбец 1 или 2
  3. Цель — отдельная клетка

и возможно

  1. Столбец 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

Это должно проверить все требуемые условия.

Связанный контент