Excel - Inserir automaticamente a data/hora atual em uma célula

Excel - Inserir automaticamente a data/hora atual em uma célula

O que estou tentando fazer é inserir algo na coluna Aou Bna data e hora atuais a serem inseridas/atualizadas na coluna D. Claro que já fiz isso, mas quero excluir colunas Ce Disso significa que quando algo é inserido nessas colunas, a data/hora não deve ser inserida/atualizada.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row > 1 Then Cells(Target.Row, "D") = Now()
End Sub

Também tenho outro código, mas ainda não consigo encontrar uma maneira de excluir algumas colunas (para criar um intervalo de colunas cuja atualização de data/hora deve funcionar)

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: Este é meu código final.

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

Responder1

Adicione a condição para que as colunas A e B sejam atendidas além da condição da linha:

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

Agora a data será inserida somente quando essas duas colunas forem editadas.

Responder2

Você deve verificar:

  1. A linha não é 1
  2. A coluna é 1 ou 2
  3. O destino é uma única célula

e talvez

  1. A coluna D na linha atual está vazia

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

Este código NÃO funcionará ao copiar e colar um intervalo com mais de 1 célula.

Responder3

Experimente:

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

Isso deve testar todas as condições exigidas.

informação relacionada