Excel: inserta automáticamente la fecha/hora actual en una celda

Excel: inserta automáticamente la fecha/hora actual en una celda

Lo que estoy tratando de hacer es cuando inserto algo en la columna Ao Bla fecha y hora actuales para insertarlo/actualizarlo en la columna D. Por supuesto, ya lo hice, pero quiero excluir columnas Cy Dlo que significa que cuando se inserta algo en estas columnas, la fecha/hora no debe insertarse/actualizarse.

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

También tengo otro código pero todavía no puedo encontrar una manera de excluir algunas columnas (para crear un rango de columnas cuya fecha/hora de actualización debería 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

EDITAR: Este es mi 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

Respuesta1

Agregue la condición para que se cumplan las columnas A y B además de la condición de la fila:

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

Ahora la fecha se insertará solo cuando se editen esas dos columnas.

Respuesta2

Debes comprobar:

  1. La fila no es 1
  2. La columna es 1 o 2.
  3. El objetivo es una sola celda.

y tal vez

  1. La columna D de la fila actual está vacía

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 NO funcionará mientras se copia y pega un rango con más de 1 celda.

Respuesta3

Prueba esto:

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

Esto debería probar todas las condiciones requeridas.

información relacionada