Lo que estoy tratando de hacer es cuando inserto algo en la columna A
o B
la fecha y hora actuales para insertarlo/actualizarlo en la columna D
. Por supuesto, ya lo hice, pero quiero excluir columnas C
y D
lo 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:
- La fila no es 1
- La columna es 1 o 2.
- El objetivo es una sola celda.
y tal vez
- 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.