Notifications
Clear all

Data e hora

7 Posts
2 Usuários
0 Reactions
1,466 Visualizações
(@insanetm)
Posts: 51
Trusted Member
Topic starter
 

Olá,

preciso de uma solução simples.

Quando a Célula A2 por exemplo for preenchida, a célula B2 grave a data e a hora em que isto ocorreu e que esta data n se altere mais caso n haja alteração na A2.

Eu tentei assim:

=SE(A2="";"";AGORA())

porém, ele vai pegar o tempo de agora toda vez que alguma célula for atualizada!

Como resolver?

 
Postado : 06/02/2014 1:46 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

insane,

para ficar gravado, tem que ser com macro.

Mas, para isso, vc precisa explicar melhor o que vc pretende, porque eu creio que não se trata somente da célula A2.

Isso será em uma coluna?, tem limite de linhas? critérios?

E se o valor de A2 for apagado, apaga também a data?

Tem como vc disponibilizar o arquivo, ou vc pode adapar o código?

 
Postado : 06/02/2014 1:51 pm
(@insanetm)
Posts: 51
Trusted Member
Topic starter
 

Então...

É uma Agenda, ela começa com a atividade (chamado) sendo registrado na célula A17, após isto, há um SEERRO+PROCV para as demais colunas até a Coluna L.
É na M que entraria o horário.

Ao digitar algo na coluna A17, a M17 faz a captura da data e hora do input.
Ao apagar a célula A"Alguma coisa" a M"alguma coisa" correspondente é apagada também.
O range é de A17:M200 (deixei 200 linhas para agendamento, porém pode-se excluir linhas)
O arquivo será compartilhado via rede, porém, acredito que a macro n atrapalhará.
Não poderei disponibilizar o arquivo. Corro o risco de ser despedido. Computadores monitorados e tudo travado pela WEBSense.

Mais alguma dúvida?

 
Postado : 06/02/2014 2:40 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Não, com isso já deu pra montar o código.

Segue:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
On Error GoTo eventos
If Target.Column = 1 And Target.Row >= 17 And Target.Row <= 200 Then
    If IsEmpty(Target) Then
        Target.Offset(0, 12).ClearContents
    Else
        Target.Offset(0, 12).Value = Now
    End If
End If
eventos:
Application.EnableEvents = True
End Sub

Coloque esse código na planilha que vc precisa. Veja, é um código de controle de eventos, se vc colocar em um módulo não vai funcionar.

Importante: mesmo com VBA, existe uma preocupação. Se vc entrar em uma célula com um valor já digitado (usando F2), e depois der enter, a data vai ser alterada.

 
Postado : 06/02/2014 3:05 pm
(@insanetm)
Posts: 51
Trusted Member
Topic starter
 

Antes de mais nada, obrigado pelo empenho.

Irei testar e já lhe reporto!

 
Postado : 07/02/2014 7:52 am
(@insanetm)
Posts: 51
Trusted Member
Topic starter
 

Acho que deu um problema...

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo HabilitarEventos
Application.EnableEvents = False

Dim UltimaLinha
UltimaLinha = Range("A" & Rows.Count).End(xlUp).Row

If IsEmpty(Cells(UltimaLinha + 1, "A")) Then
Range(Cells(UltimaLinha, "A"), Cells(UltimaLinha, "J")).Copy Range(Cells(UltimaLinha + 1, "A"), Cells(UltimaLinha + 1, "J"))
Union(Cells(UltimaLinha + 1, "A"), Range(Cells(UltimaLinha + 1, "K"), Cells(UltimaLinha + 1, "K"))).ClearContents
End If

HabilitarEventos:
Application.EnableEvents = True

End Sub

Já existe este código acima, colei o seu abaixo e deu duplicidade.

Retirei o teu código, coloquei e módulo, já n apresentou mais o conflito de duplicidade, mas também n fez nada.

O que fazer?

 
Postado : 07/02/2014 8:08 am
(@insanetm)
Posts: 51
Trusted Member
Topic starter
 

Consegui... era apenas uma questão de pensar... ou seja, unir os 2 códigos utilizando apenas 1 cabeçalho.

Desculpe!

 
Postado : 07/02/2014 8:14 am