O que estou tentando fazer é inserir algo na coluna A
ou B
na data e hora atuais a serem inseridas/atualizadas na coluna D
. Claro que já fiz isso, mas quero excluir colunas C
e D
isso 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:
- A linha não é 1
- A coluna é 1 ou 2
- O destino é uma única célula
e talvez
- 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.