Página 1 de 1

Excel - pegar data e hora se valor da célula for alterado, mas somente se for alterado

Enviado: 24 Mar 2021 às 17:29
por IranSST
Estou tendo dificuldade com o o código VBA, gostaria que a célula "X " pegasse a hora/data que o valor da célula "Y" fosse alterada, a parte de pegar data e hora/data eu já consegui, o problema é que se eu clicar na célula "Y" e sair mesmo sem alterar a hora muda, como se eu tivesse alterado e eu gostaria que a hora/data só alterasse se o valor que está na célula "Y" realmente seja alterada, poderiam me ajudar já tentei de tudo e mas meu conhecimento em VBA é bem limitado

meu código está assim:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.Volatile

If Target.Column = 4 And Target.Value <> "" Then
Range("A" & Target.Row) = Date
Range("B" & Target.Row) = Time
ElseIf Target.Column = 4 And Target.Value = "" Then
Range("A" & Target.Row) = ""
Range("B" & Target.Row) = ""
End If
End Sub

Re: Excel - pegar data e hora se valor da célula for alterado, mas somente se for alterado

Enviado: 24 Mar 2021 às 20:45
por osvaldomp
IranSST escreveu: 24 Mar 2021 às 17:29 ... se eu clicar na célula "Y" e sair mesmo sem alterar a hora muda, ...
O código que você postou não deveria executar, então provavelmente você deve estar fazendo algo mais do que simplesmente ativar e desativar a célula.

Está apertando F2 ?
Está aplicando duplo clique?

Re: Excel - pegar data e hora se valor da célula for alterado, mas somente se for alterado

Enviado: 25 Mar 2021 às 08:50
por IranSST
O CODIGO EXECUTA QUANDO EU CLICO NA CELULA PARA ESCREVER ALGO E SAIO, INDEPENDENTE DE EU ESCREVER OU NÃO ELE EXECUTA

Re: Excel - pegar data e hora se valor da célula for alterado, mas somente se for alterado

Enviado: 25 Mar 2021 às 08:53
por IranSST
Se ajudar a entender, eu anexei o arquivo, a planilha (worksheet) que eu quero que aconteça a ação informada é a "LEMBRE-SE", inclusive o codigo vba está vinculado a ela, não está em um modulo.

Re: Excel - pegar data e hora se valor da célula for alterado, mas somente se for alterado

Enviado: 25 Mar 2021 às 09:28
por osvaldomp
IranSST escreveu: 25 Mar 2021 às 08:53 ... inclusive o codigo vba está vinculado a ela, não está em um modulo.
Óbvio, pois os códigos referentes a eventos de planilha obrigatoriamente devem ser instalados no módulo da planilha. ;)
Fiz vários testes na planilha LEMBRE-SE e tal como comentei antes, ativar e desativar manualmente qualquer célula da coluna D NÃO EXECUTA O CÓDIGO.

A propósito, este comando ~~~> Application.Volatile ~~~> não faz sentido, pode ser removido (vai que é ele que tá provocando um efeito ghost na sua planilha). ;)

Re: Excel - pegar data e hora se valor da célula for alterado, mas somente se for alterado

Enviado: 25 Mar 2021 às 10:18
por IranSST
Entendi, mas aqui quando a coluna "D" está vazia e eu preencho a coluna A e B pega a data e a hora, até ai tudo bem, o problema ocorre que se eu clicar na coluna D pra alterar e mudar de idéia por exemplo "não alterar a coluna q não está mais vazia"
eu queria que ele identifica-se o valor que está na coluna D caso ela não esteja vazia, e só atualiza-se a data e hora novamente se eu alterar, mas se eu clicar 2x na coluna D e sair sem alterar é pra manter a data e hora que estava antes. Ja tentei usar IF porém todas as sinatses que usei não deram certo

Re: Excel - pegar data e hora se valor da célula for alterado, mas somente se for alterado

Enviado: 25 Mar 2021 às 11:08
por osvaldomp
IranSST escreveu: 25 Mar 2021 às 10:18 ... mas se eu clicar 2x ...
Lembra disto ? ~~~> Está aplicando duplo clique?
Instale uma cópia do código abaixo no lugar do código atual.
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Vold, Vnew
  If Target.Count > 1 Then Exit Sub
  If Target.Column <> 4 Then Exit Sub
  If Target.Value = "" Then
   Cells(Target.Row, 1).Resize(, 2) = ""
  Else
   Vnew = Target.Value
   Application.EnableEvents = False
   Application.Undo
   Vold = Target.Value
   If Vnew <> Vold Then Cells(Target.Row, 1) = Date: Cells(Target.Row, 2) = Time
   Target.Value = Vnew
   Application.EnableEvents = True
  End If
End Sub

Re: Excel - pegar data e hora se valor da célula for alterado, mas somente se for alterado

Enviado: 26 Mar 2021 às 11:26
por IranSST
:P Deu certo, cara muito obrigado