Muitas vezes os usuários necessitam saber a hora ou a data em que a informação foi inserida na tabela, ainda mais quando esta é compartilhada com outras pessoas. Esta ação, até então impossível, pode ser feita através de um pequeno comando VBA, ao qual poderá facilitar, e muito, seus trabalhos nesta ferramenta.
O Excel dispõe de muitas funções no que tange a datas e/ou horas, porém, nenhuma delas retorna a data e a hora em que a célula foi alterada, sem que esta seja mudada até o momento de sua próxima alteração. A função =Agora(), por exemplo, retorna-as no momento em que é aplicada, no entanto, toda vez que a planilha for aberta, a mesma troca para a respectiva data e hora atuais. Para que possamos fazer isto, então, a única solução é utilizarmos um comando VBA, muito prático de ser usado.
Suponha que tenhas uma tabela em que serão colocadas numerações de documentos muito importantes, e necessita-se, portanto, a respectiva data ou hora de sua alteração, afim de que se tenha um maior controle e segurança. Siga o passo a passo e aprenda como proceder:
- Crie a tabela com os dois títulos: N° Documento e Hora de Modificação.
- Localize na aba Desenvolver a opção Visual Basic e clique sobre ela.
- Na janela de configuração VBA, dê dois cliques em Plan1.
- No quadro de edição que retornará, cole o seguinte comando:
Private Sub Worksheet_Change(ByVal Alvo As Range)
Dim limite_maximo As Integer
limite_maximo = 1000 ' altere aqui para limitar a última linha
If Alvo.Cells.Count > 1 Or IsEmpty(Alvo) Then Exit Sub
' faz nada se mais de uma célula modificada ou se deu delete
If Alvo.Column <= 26 And Alvo.Row >= 1 And Alvo.Row <= limite_maximo Then
' o if acima garante que a célula modificada está dentro do intervalo definido: A1:Z1000
' desliga captura do evento change
Application.EnableEvents = False
' muda a célula C da linha correspondente
Alvo.Offset(0, 2).Value = Time() 'Troque por Date() se quiser que mostre a data ao invés do horário
' religa a captura de eventos
Application.EnableEvents = True
End If
End Sub
- Após aplicado o comando, pode fechar a janela de comandos VBA e testar a tabela. Perceba que ao digitar um suposto número de documento, a hora será dada ao lado, sendo modificada toda vez que os dados forem alterados.
Obs.: O comando explicado retorna somente a hora da edição da célula, caso queira que o mesmo retorne a data desta modificação, basta trocar Time(), presente no comando, por Date(). É possível mesclar também. Gosto de colocar para que o horário seja exibido na célula C1, por exemplo, e a data na célula D1. Assim fica um registro mais completo.
O código é este abaixo. Experimente =)
Private Sub Worksheet_Change(ByVal Alvo As Range)
Dim limite_maximo As Integer
limite_maximo = 1000 ' altere aqui para limitar a última linha
If Alvo.Cells.Count > 1 Or IsEmpty(Alvo) Then Exit Sub
' faz nada se mais de uma célula modificada ou se deu delete
If Alvo.Column <= 26 And Alvo.Row >= 1 And Alvo.Row <= limite_maximo Then
' o if acima garante que a célula modificada está dentro a2:a100
' desliga captura do evento change
Application.EnableEvents = False
' muda a célula C da linha correspondente
Alvo.Offset(0, 2).Value = Time() ' Registra a hora
Alvo.Offset(0, 3).Value = Date() ' Registra a data
' religa a captura de eventos
Application.EnableEvents = True
End If
End Sub
Agora, todo dado digitado na coluna de documentos retornará a sua respectiva data ou hora na coluna correspondente. Vale lembrar que o comando foi configurado apenas para as duas colunas em específico, caso digitares dados em outras colunas da tabela, a data não será retornada. Enfim, com o uso de simples comandos VBA é possível realizar atividades aparentemente impossíveis.
Problemas com o download?
Veja nosso tutorial e saiba como resolver qualquer tipo de problema que você enfrentar para baixar, abrir ou executar nossas planilhas.
😕 Poxa, o que podemos melhorar?
😃 Boa, seu feedback foi enviado!
✋ Você já nos enviou um feedback para este texto.