Note: The other languages of the website are Google-translated. Back to English

Como registrar data e hora automaticamente quando a célula muda?

É fácil para nós inserir data e hora estáticas manualmente ou inserir uma data dinâmica que muda com a hora do sistema com uma fórmula. Se você deseja registrar a data e a hora automaticamente ao alterar ou inserir valores, pode ser um pouco diferente para lidar com este problema. Mas, neste artigo, você pode resolver essa tarefa com as etapas a seguir.

Registre data e hora automaticamente quando a célula muda com o código VBA


seta azul bolha direita Registre data e hora automaticamente quando a célula muda com o código VBA

Por exemplo, eu tenho um intervalo de valores e agora, quando eu alterar ou digitar novos valores na Coluna B, quero que registre automaticamente a data e a hora atuais na Coluna C como mostrado a seguir:

doc-update-time-value-changes-1

Você pode terminar esta tarefa com o seguinte código VBA. Por favor, faça o seguinte:

1. Segure o ALT + F11 chaves para abrir o Janela Microsoft Visual Basic for Applications.

2. Em seguida, escolha a planilha usada à esquerda Explorador de Projetos, clique duas vezes para abrir o Móduloe, em seguida, copie e cole o seguinte código VBA no módulo em branco:

Código VBA: registra data e hora automaticamente quando a célula muda

Private Sub Worksheet_Change(ByVal Target As Range)
'Update 20140722
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("B:B"), Target)
xOffsetColumn = 1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
    For Each Rng In WorkRng
        If Not VBA.IsEmpty(Rng.Value) Then
            Rng.Offset(0, xOffsetColumn).Value = Now
            Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
        Else
            Rng.Offset(0, xOffsetColumn).ClearContents
        End If
    Next
    Application.EnableEvents = True
End If
End Sub

doc-update-time-value-changes-1

3. Em seguida, salve e feche este código para retornar à planilha, agora quando você alterar o valor da célula ou digitar novos dados na Coluna B, a data e a hora serão registradas automaticamente na Coluna C.

notas:

1. No código acima, você pode modificar o “B: B”Para qualquer outra coluna em que você deseja alterar os valores das células neste script: Defina WorkRng = Intersect (Application.ActiveSheet.Range ("B: B"), Destino).

2. Com isso xOffsetColumn = 1 script, você pode inserir e atualizar a data e hora para a primeira coluna ao lado de sua coluna de valor de alteração, você pode alterar o número 1 para outros números, como 2,3,4,5 ... isso significa que a data será inserida no segunda, terceira, quarta ou quinta coluna além da coluna de valores alterados.

3. Ao excluir um valor na coluna alterada, a data e a hora também serão removidas.


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2021 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos de avaliação gratuita de 30 dias. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (108)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Como você escreve o código para fazer isso várias vezes em uma página Ex. texto na coluna B, data em C e texto em D, data em E?
Este comentário foi feito pelo moderador no site
[quote]Como você escreve o código para fazer isso várias vezes em uma página Ex. texto na coluna B, data em C e texto em D, data em E?De Hilary[/quote] Eu sei que isso é antigo, mas, o caminho longo, mas fácil, é copiar as declarações de variáveis ​​e criar novas variáveis ​​(ou seja, WorkRng1 e Rng1). Você também precisa copiar a instrução "if" e alterar as variáveis ​​para os novos nomes de variáveis.
Este comentário foi feito pelo moderador no site
[quote]Como você escreve o código para fazer isso várias vezes em uma página Ex. texto na coluna B, data em C e texto em D, data em E?De Hilary[/quote] Aqui está o código: Private Sub Worksheet_Change(ByVal Target As Range) 'Update 20140722 Dim WorkRng As Range Dim Rng As Range Dim xOffsetColumn As Integer 'Mude o intervalo para selecionar a coluna que você está atualizando, ou seja ("A: A") ou ("B:B") Set WorkRng = Intersect(Application.ActiveSheet.Range("E:E"), Target) xOffsetColumn = 1 'Para o segundo carimbo de hora 'Cria novos nomes de variáveis, como WorkRng1, Rng1, etc. Dim WorkRng1 As Range Dim Rng1 As Range Dim xOffsetColumn1 As Integer Set WorkRng1 = Intersect(Application.ActiveSheet.Range("G:G"), Target) xOffsetColumn1 = 1 'Para o primeiro carimbo de hora If Not WorkRng Is Nothing Então Application.EnableEvents = False para cada Rng em WorkRng Se não VBA.IsEmpty(Rng.Value) Então Rng.Offset(0, xOffsetColumn).Value = Agora Rng.Offset(0, xOffsetColumn).NumberFormat = "mm/dd/ yyyy" Else Rng.Offset(0, xOffsetColumn).ClearContents End If Next Application.EnableEvents = True End If 'Para o segundo carimbo de hora If Not WorkRng1 é Nothing Then Application.EnableEve nts = False para cada Rng1 em WorkRng1 Se não VBA.IsEmpty(Rng1.Value) Então Rng1.Offset(0, xOffsetColumn1).Value = Agora Rng1.Offset(0, xOffsetColumn1).NumberFormat = "mm/dd/yyyy" Senão Rng1.Offset(0, xOffsetColumn1).ClearContents End If Next Application.EnableEvents = True End If End Sub
Este comentário foi feito pelo moderador no site
E se eu quiser fazer isso para um intervalo de colunas?
Este comentário foi feito pelo moderador no site
altere o intervalo (B:B) assim: (10:20) para as colunas 10 a 20 (D5:D40) para as colunas 5 a 40 na linha D Espero que ajude.
Este comentário foi feito pelo moderador no site
Desculpe, eu troco colunas por linhas, mas ainda funciona. (D:P) Da coluna D para P (D5:D5) da coluna D para P na linha 5
Este comentário foi feito pelo moderador no site
quando eu salvo funciona, mas quando eu reabro não funciona
Este comentário foi feito pelo moderador no site
[quote]quando eu salvo funciona, mas quando eu reabro não funcionaPor Aarif[/quote] Mesmo problema do Aarif... Funcionou uma delícia meia hora atrás, e agora não... também, eu queria apenas a hora e não a data E hora, então editei o ".NumberFormat" para ser só hh:mm:ss, salvei, testei... nada diferente... ainda colocando a data e a hora...? abri o VB novamente, e digitei algum texto delimitado, salvei novamente, ainda não deu certo então fiz uma terceira vez, e o formato fez como foi dito e de repente eu cheguei na hora. MUITO estranho Há muito tempo pensava que o Excell é assombrado, desde que usei a função PESQUISA pela primeira vez, procurando um valor em uma célula que eu pudesse ver com meus próprios olhos, mas o Excel insistia que não existia!? Algum guru ou exorcista do Excel que possa ajudar? por que está ignorando meu VB e NÃO timestamp como fez ...? obrigado :cry:
Este comentário foi feito pelo moderador no site
[quote]Como você escreve o código para fazer isso várias vezes em uma página Ex. texto na coluna B, data em C e texto em D, data em E?De Hilary[/quote] qual é a resposta para a citação
Este comentário foi feito pelo moderador no site
E se eu quiser que isso seja executado, mas não estiver em uma planilha ativa, então execute em segundo plano e atualize sempre que houver uma entrada na coluna B?
Este comentário foi feito pelo moderador no site
E se a coluna que está afetando a coluna de carimbo de data/hora for a soma de várias outras colunas? Por exemplo... Coluna H é =Soma(E+F+G) e eu gostaria de um carimbo de hora na Coluna I toda vez que a Coluna H fosse alterada, ou em essência quando as Colunas E, F ou G fossem alteradas . Você pode por favor ajudar??
Este comentário foi feito pelo moderador no site
Preciso de ajuda, por favor! Estou tentando ter um carimbo de hora feito cada vez que uma das três células é alterada. Eu idealmente gostaria de fazer isso quando a soma dessas células foi alterada. Por exemplo. As células E, F, G serão alteradas e a célula H será a SOMA dessas três células. Quando a Célula H for alterada, gostaria que a Célula I tivesse um carimbo de hora. Isso é possível?? Muito obrigado
Este comentário foi feito pelo moderador no site
Estou tentando executar o código acima; no entanto, a célula cuja alteração quero registrar está vinculada a uma caixa de seleção e, portanto, é "VERDADEIRA" ou "FALSA". Por algum motivo, o código não funcionará quando a célula for alterada. No entanto, se eu inserir diga "sim" manualmente, o código funcionará bem. Alguma solução para esse problema que você conheça? Obrigada!
Este comentário foi feito pelo moderador no site
É possível fazer isso para dados históricos? Se fiz alterações em uma célula ontem ou há um mês, posso usar um formulário desse código para recuperar essas datas?
Este comentário foi feito pelo moderador no site
Existe uma maneira de carimbo de data/hora com base em uma alteração específica? Por exemplo, eu tenho uma planilha com uma coluna de opções suspensas, incluindo estar em branco, 'Ok' e 'Act'. Quando a tarefa é concluída, o menu suspenso é usado manualmente para selecionar 'Ok'. Eu gostaria que o carimbo de data fosse vinculado quando 'Ok' for selecionado, mas não quando 'Act' for selecionado. A opção 'Act' na lista suspensa é usada quando uma tarefa está atrasada, mas estou apenas tentando rastrear quando um item é concluído. Existe uma maneira de fazer isso com o código acima? Obrigado!
Este comentário foi feito pelo moderador no site
Você conseguiu resolver isso?
Este comentário foi feito pelo moderador no site
é muito boa pergunta. você resolveu, poderia compartilhar o caminho?
obrigado
Este comentário foi feito pelo moderador no site
Posso alterar o intervalo para ("A:Q"), mas preciso que a data e a hora sejam "S" se os dados em qualquer célula AQ forem alterados/removidos. Eu sou VBA desafiado. Qualquer ajuda é muito apreciada!
Este comentário foi feito pelo moderador no site
Desculpe, acabei de postar uma pergunta e preciso da resposta para isso... Devo ter perdido este comentário... espero que alguém possa ajudar!
Este comentário foi feito pelo moderador no site
Como faço para alterá-lo para que apenas a data da célula adjacente seja alterada?
Este comentário foi feito pelo moderador no site
Como faço para obter o carimbo de hora para gravar em uma célula específica, em vez da célula ao lado da que foi alterada. Estou tentando ter uma linha de células com carimbo de hora quando ocorre uma alteração em qualquer uma dessas células, gostaria que o carimbo de hora fosse registrado em uma célula específica... alguém pode ajudar com isso? Obrigada!
Este comentário foi feito pelo moderador no site
Olá, obrigado por isso, pois é ótimo para a auditabilidade do WB. Existe uma maneira de alterar isso para que a data/hora seja registrada em algum lugar no WB sempre que um comentário for adicionado ou modificado? Eu sei que esta é uma pergunta geral, mas não tenho certeza se é possível (infelizmente para o MS 2010, a propriedade .comment não contém uma propriedade de data para identificar quando ela foi inserida. Mike
Este comentário foi feito pelo moderador no site
Como posso configurar para ler a coluna A:A e dar carimbo de hora em B:B somente quando um número de 14 dígitos é inserido nela?
Este comentário foi feito pelo moderador no site
Oi, eu preciso de alguma ajuda de codificação VBA. Estou criando uma planilha com casos que serão atribuídos a pessoas e terão status de caso. O cessionário estará na Col H e eu preciso de um carimbo de data na Col I quando a célula na Col H for atualizada ou alterada com um nome. Da mesma forma, terei status de caso em Col J e precisarei de um carimbo de data em Col K quando um status for inserido ou alterado. também quando houver nome ou status de não cessionário, preciso que o carimbo de data nas colunas I e K esteja em branco. Qualquer ajuda seria apreciada. Obrigado
Este comentário foi feito pelo moderador no site
Encontrei este código em outro lugar e o modifiquei para meu uso. Se feito corretamente, você não precisa se preocupar em inserir uma função em uma célula ou o arquivo alterando as datas para a data daquele dia toda vez que for aberto. - abra o Excel - pressione "Alt+F11" - Clique duas vezes na planilha à qual você deseja aplicar a alteração (listada à esquerda) - copie/cole o código abaixo - ajuste a entrada Range(_:_) para corresponder para a coluna que você irá atualizar - ajuste a entrada Offset(0,_) para corresponder à coluna onde você gostaria que a data fosse exibida (na versão abaixo estou fazendo atualizações na coluna D e quero que a data seja exibida na coluna F, daí a entrada de entrada de "2" para 2 colunas da coluna D) - clique em salvar - repita as etapas acima se houver outras planilhas em sua pasta de trabalho que precisem do mesmo código - talvez seja necessário alterar o formato do número da coluna exibindo o date para "General" e aumente a largura da coluna se estiver exibindo "####" depois de fazer uma entrada atualizada Copiar/colar o código abaixo: ____________________________________________________________ Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range(" D:D")) Não é nada, então Exit Sub Target.Offset(0, 2) = Date End Sub ___ _________________________________________________________ Boa sorte...
Este comentário foi feito pelo moderador no site
este código mostrará a data ao clicar que aparece, é possível mostrar a data apenas quando o conteúdo da célula é alterado, se apenas clicado e nada alterado, então a data não aparece ou a data inserida anteriormente permanece?
Este comentário foi feito pelo moderador no site
Quando estou gravando em macro uma fórmula vloocup, então, como posso fazer essa data alterada automaticamente para 1 dia, como se fosse 21/07/2017, no dia seguinte, mudasse para 22/07/2017 Automaticamente, por favor, compartilhe se houver algum código vba.
Este comentário foi feito pelo moderador no site
substitua esta linha
Rng.Offset(0, xOffsetColumn).Value = Agora

para
Rng.Offset(0, xOffsetColumn).Value = Agora+1
Este comentário foi feito pelo moderador no site
Muito obrigado pelo código! Exatamente o que eu estava procurando!!
Este comentário foi feito pelo moderador no site
Obrigado pela ajuda :-)
Não há comentários postados aqui ainda
carregar mais

Siga-nos

Copyright © 2009 - www.extendoffice.com. | Todos os direitos reservados. Distribuído por ExtendOffice. | | | Mapa do site
Microsoft e o logotipo do Office são marcas comerciais ou marcas registradas da Microsoft Corporation nos Estados Unidos e / ou em outros países.
Protegido por Sectigo SSL