Inserir carimbo de data e hora com VBA

Anonim

Inserir data e hora no Excel usando VBA é tão simples quanto escrever uma fórmula em uma célula.

O código do carimbo de data / hora VBA é:

Intervalo (“A1”). Valor = Formato (agora, "mm / dd / aaaa HH: mm: ss")

Este código mostrará a data e hora atuais na célula A1. E sim, é isso. está feito.

A função “Agora” retorna a data e hora atuais, e a função “Formatar” formata a saída no formato "mm / dd / aaaa HH: mm: ss".

Mostra a data e a hora sempre que uma alteração é feita usando o VBA.

Digamos que você preparou uma folha. Nesta folha, você deseja que o tempo seja mostrado na coluna B sempre que alguém fizer uma entrada na coluna A.

Agora precisamos de um código de carimbo de data / hora VBA que seja executado sempre que uma alteração for feita na coluna A.

O código abaixo faz o trabalho facilmente.

Executar macro quando uma mudança for feita (manipulador de eventos de mudança de planilha)

Private Sub Worksheet_Change (ByVal Target As Range) If Not Intersect (Target, Range ("A: A")) Is Nothing ThenOn Error Resume Next If Target.Value = "" ThenTarget.Offset (0, 1) = "" Else Target .Offset (0, 1) .Value = Format (Now, "mm / dd / aaaa HH: mm: ss") End If End If End Sub 

Para executar este código, abra o VBA e clique duas vezes na planilha na janela do projeto na qual você deseja mostrar o carimbo de data / hora.

Agora temos que usar o manipulador de eventos VBA, pois queremos executar nosso código para ser executado sempre que uma alteração for feita.

No menu suspenso acima do seu código, selecione Planilha.

Agora, ao lado da lista suspensa da planilha, você verá outra lista suspensa. Ele contém muitos manipuladores de eventos. Por enquanto, selecione “alterar”.

Agora copie o código acima aqui.

E está feito. Volte para sua planilha e verifique.

Explicação do código:

    • O código é escrito na folha1 clicando duas vezes nela. Isso significa que seu código pertence apenas a esta folha.
    • Usamos o manipulador de eventos “Change” de “Worksheet” para acionar nosso código VBA.
    • Sub-planilha privada_Change (ByVal Target As Range)

      Este é o nome de sub-rotina fixo e padrão de um manipulador de eventos de mudança.

    • Queremos que nosso código execute a mudança feita apenas na coluna A.
    • If Not Intersect (Target, Range ("A: A")) Is Nothing Then

      Esta linha verifica se a célula alterada está na coluna A ou não.

    • Agora, se a linha acima retornar True, então essas linhas são executadas
On Error Resume Next If Target.Value = "" ThenTarget.Offset (0, 1) = "" ElseTarget.Offset (0, 1) .Value = Format (Agora, "mm / dd / aaaa HH: mm: ss")

A primeira linha ignora o pop-up de erro e executa essas duas linhas. Se você omitir On Erro retomar próximo você verá um erro surgindo ao excluir um valor na coluna A.

Se Target.Value = "" Then

: - Esta linha verifica se uma célula da coluna A está em branco. Se sim então

Target.Offset (0, 1) = ""

: - Esta linha exclui o valor da célula adjacente.

E se for falso

 Else Target.Offset (0, 1) .Value = Format (agora, "mm / dd / aaaa HH: mm: ss")

: - Esta linha insere a hora e a data atuais adjacentes à coluna A.

  • E as últimas três linhas apenas fecham seus respectivos blocos. E está feito. Agora você tem uma planilha que fornece o tempo exato da mudança feita em uma célula da coluna A.

Você deve ter notado que existem vários manipuladores de eventos na lista suspensa. Brinque com eles. Tente descobrir o que cada manipulador de eventos funciona. E se tiver alguma dificuldade, escreva na seção de comentários.

Inserir carimbo de data e hora com VBA