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

Como preencher automaticamente a data na célula quando a célula adjacente é atualizada no Excel?

Às vezes, ao atualizar uma célula em uma determinada coluna, você pode querer marcar a última data sobre a atualização. Este artigo recomendará um método VBA para resolver esse problema. Quando a célula é atualizada, a célula adjacente será preenchida automaticamente com a data atual imediatamente.

Preencher automaticamente a data atual na célula quando a célula adjacente for atualizada com o código VBA


Preencher automaticamente a data atual na célula quando a célula adjacente for atualizada com o código VBA

Supondo que os dados que você precisa atualizar sejam localizados na coluna B, e quando a célula na coluna B for atualizada, a data atual será preenchida na célula adjacente da coluna A. Veja a captura de tela:

Você pode executar o seguinte código VBA para resolver esse problema.

1. Clique com o botão direito na guia da planilha necessária para preencher automaticamente a data com base na célula atualizada adjacente e clique em Ver código no menu do botão direito.

2. Na janela Microsoft Visual Basic for Applications, copie e cole o código VBA abaixo na janela Code.

Código VBA: preencher automaticamente a data atual em uma célula quando a célula adjacente for atualizada

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Updated by Extendoffice 2017/10/12
    Dim xRg As Range, xCell As Range
    On Error Resume Next
    If (Target.Count = 1) Then
        If (Not Application.Intersect(Target, Me.Range("B:B")) Is Nothing) Then _
            Target.Offset(0, -1) = Date
        Application.EnableEvents = False
        Set xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
        If (Not xRg Is Nothing) Then
            For Each xCell In xRg
                xCell.Offset(0, -1) = Date
            Next
        End If
        Application.EnableEvents = True
    End If
End Sub

Notas:

1). No código, B: B significa que os dados atualizados estão localizados na coluna B.
2). -1 indica que a data atual será preenchida na coluna esquerda da coluna B. Se você quiser que a data atual seja preenchida na coluna C, altere -1 para 1.

3. Pressione outro + Q chaves ao mesmo tempo para fechar o Microsoft Visual Basic para Aplicações janela.

A partir de agora, ao atualizar células na coluna B, a célula adjacente na coluna A será preenchida com a data atual imediatamente. Veja a imagem:


Artigos relacionados:


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-2019 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Teste gratuito de 30 dias com recursos completos. 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 (40)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Obrigado. Isso ajudou muito. Mas quando estou excluindo uma linha ou adicionando uma linha, isso gera um erro de tempo de execução 13 Incompatibilidade de tipo. Como abordar esta questão. Esperando uma reversão o mais rápido possível.
Este comentário foi feito pelo moderador no site
Caro Jishnu,
O problema que você mencionou não aparece no meu caso. Você poderia fornecer sua versão do Office?
Este comentário foi feito pelo moderador no site
Eu tenho um conjunto de planilhas do Excel intitulado segunda, terça, quarta, etc. Eu não sou alfabetizado em código, então eu só preciso saber qual é a fórmula simples que posso colocar lá. :) obrigada!
Este comentário foi feito pelo moderador no site
Querida Lia,
Basta usar a fórmula =segunda-feira!A1+1 na terça-feira de folha, =terça-feira!A1+1 na quarta-feira de folha e assim por diante...
Este comentário foi feito pelo moderador no site
Isso pode ser feito em uma célula que contém uma fórmula?
Este comentário foi feito pelo moderador no site
Prezada Tammy,
O código foi atualizado. Isso pode ser feito em uma célula que contém uma fórmula agora. Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Obrigado, funciona bem, mas quando se trata de fechar e salvar, estou recebendo um erro de que o recurso "projeto VB" não pode ser salvo em uma pasta de trabalho sem macro. Por favor informar
Este comentário foi feito pelo moderador no site
Obrigado, funciona bem, mas quando se trata de fechar e salvar, estou recebendo um erro de que o recurso "projeto VB" não pode ser salvo em uma pasta de trabalho sem macro. Por favor informar
Este comentário foi feito pelo moderador no site
Você só precisa "salvar como" uma pasta de trabalho habilitada para macro do Excel....
Este comentário foi feito pelo moderador no site
Você é capaz de usar esta função duas vezes na mesma folha? ou seja, se eu gostaria de fazer entradas na coluna B para carimbo de data/hora coluna A E colocar entradas na coluna D para carimbo de data/hora coluna C. Obrigado!
Este comentário foi feito pelo moderador no site
Eu fiz isso funcionar fazendo o seguinte:


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Atualizado por Extendoffice 2017/10/12
Dim xRg como intervalo, xCell como intervalo
On Error Resume Next
Se (Alvo.Contagem = 1) Então
Se (Não Application.Intersect(Target, Me.Range("B:B")) for Nada) Então _
Alvo.Deslocamento(0, -1) = Data
Application.EnableEvents = False
Set xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
Se (não xRg é nada) então
Para cada xCell em xRg
xCell.Offset(0, -1) = Data
Seguinte
Se acabar
Application.EnableEvents = True
Se acabar


On Error Resume Next
Se (Alvo.Contagem = 1) Então
Se (Não Application.Intersect(Target, Me.Range("D:D")) for Nada) Então _
Alvo.Deslocamento(0, -1) = Data
Application.EnableEvents = False
Set xRg = Application.Intersect(Target.Dependents, Me.Range("D:D"))
Se (não xRg é nada) então
Para cada xCell em xRg
xCell.Offset(0, -1) = Data
Seguinte
Se acabar
Application.EnableEvents = True
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Oi,

Alguém pode sugerir um código para quando eu inserir o número na coluna A e na coluna B e na coluna CI mantive uma fórmula como a coluna A + coluna B. Agora eu preciso de um código vba que possa fornecer hora e data na coluna D sempre que a coluna C for alterada não ao inserir números na coluna A e B.
Este comentário foi feito pelo moderador no site
Bom dia,
Qualquer dúvida sobre o Excel, não hesite em postar em nosso fórum: https://www.extendoffice.com/forum.html.
Você obterá mais suporte sobre o Excel do nosso profissional de Excel.
Este comentário foi feito pelo moderador no site
HI - novo no VBA - quero fazer um loop no código - código VBA: preencher automaticamente a data atual em uma célula quando a célula adjacente for atualizada para que, após uma célula ser atualizada com uma data, passe para dizer "J:J" e atualize K com data e depois faça mais 2 vezes. Não tem certeza se é um loop ou para? Obrigada
Este comentário foi feito pelo moderador no site
Não importa... Eu tentei a resposta de John abaixo e funciona - obrigado!
Este comentário foi feito pelo moderador no site
Usei este código para preencher automaticamente uma coluna e agora desejo preencher automaticamente mais colunas com base na data inserida na coluna H. Em outras palavras, uma vez que uma data é inserida, posso preencher automaticamente as colunas para adicionar datas de 90, 60 e 30 dias ?
Este comentário foi feito pelo moderador no site
Oi Tracey,
O código VBA a seguir pode ajudá-lo a resolver o problema. Por favor, tente.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim xRg como intervalo, xCell como intervalo
Dim xRgAddress As String
xRgAddress = "H:H"
On Error Resume Next
Se (Target.count = 1) Então
Se (Não Application.Intersect(Target, Me.Range(xRgAddress)) for Nada) Então
Alvo.Deslocamento(0, 1) = Data + 90
Alvo.Deslocamento(0, 2) = Data + 60
Alvo.Deslocamento(0, 3) = Data + 30
Se acabar
Application.EnableEvents = False
Definir xRg = Application.Intersect(Target.Dependents, Me.Range(xRgAddress))
Se (não xRg é nada) então
Para cada xCell em xRg
xCell.Offset(0, 1) = Data + 90
xCell.Offset(0, 2) = Data + 60
xCell.Offset(0, 3) = Data + 30
Seguinte
Se acabar
Application.EnableEvents = True
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Oi. Estou tentando usar o "Auto Preencher a data atual na célula quando a célula adjacente é atualizada com o código VBA". Isso funciona na Planilha 1, mas tenho 11 outras planilhas nas quais preciso do código para trabalhar. Por favor informar. Eu não sou experiente em VBA, então agradeço qualquer ajuda que possa obter!

Obrigado.
Este comentário foi feito pelo moderador no site
Oi gwen,
Repita as etapas para copiar o código para outras planilhas. Pode ser tedioso, mas funciona.
Este comentário foi feito pelo moderador no site
Olá, preciso de uma ajuda. Estou tentando preencher a data atual na coluna A se alguma célula B a N for modificada. O deslocamento está me tirando do sério. Este código pode ser escrito para preencher automaticamente a data na coluna A especificamente?
Este comentário foi feito pelo moderador no site
Oi Joe,
O código VBA abaixo pode ajudá-lo a resolver o problema. Por favor, tente e obrigado pelo seu comentário.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Atualizado por Extendoffice 20190924
Dim xRg como intervalo, xCell como intervalo
Dim xInt como inteiro
On Error Resume Next
Se (Alvo.Contagem = 1) Então
Se (Não Application.Intersect(Target, Me.Range("B:N")) for Nada) Então
Application.EnableEvents = False
xInt = Target.Row
Me.Range("A" & xInt).Value = Data
Application.EnableEvents = True
Se acabar
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Olá, Posso definir a data e a hora para preencher?
Este comentário foi feito pelo moderador no site
Olá Abadia,
No código acima, substitua esta linha
"xCell.Offset(0, -1) = Data"
com
"xCell.Offset(0, -1) = Format(Now(), "aaaa-MM-dd hh:mm:ss")".
Espero que eu possa ajudar. Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
isso não adicionou o tempo... existe outra maneira?
Este comentário foi feito pelo moderador no site
você tem que alterá-lo em 2 lugares, se você vir o código original, a data está em 2 lugares, altere ambos com Format(Now(), "yyyy-MM-dd hh:mm:ss")
Este comentário foi feito pelo moderador no site
Olá, existe uma maneira de tornar a coluna (A) preenchida automaticamente com uma data ao inserir um valor em qualquer célula da mesma linha?
Este comentário foi feito pelo moderador no site
Olá Harry,
O código VBA abaixo pode ajudá-lo a resolver o problema. Especifique o intervalo o máximo possível no código. Obrigado pelo seu comentário.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Atualizado por Extendoffice 20191017
Dim xRg como intervalo, xCell como intervalo
Dim xInt como inteiro
On Error Resume Next
Se (Alvo.Contagem = 1) Então
Se (Não Application.Intersect(Target, Me.Range("B:BP")) for Nada) Então
Application.EnableEvents = False
xInt = Target.Row
Me.Range("A" & xInt).Value = Data
Application.EnableEvents = True
Se acabar
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
eu acho que uma mudança é necessária para a linha 7 também ...
Este comentário foi feito pelo moderador no site
Alguém sabe se existe uma maneira de preencher automaticamente e bloquear para impedir que o digitador altere a data? Quando bloqueio as células e protejo o documento, as células não são preenchidas.
Este comentário foi feito pelo moderador no site
Não quero inserir a data, mas um valor constante na célula, por exemplo: um número ou uma string de texto. por favor, sugira as alterações de código para o mesmo.
obrigado
Este comentário foi feito pelo moderador no site
Olá, se você quiser inserir um número, substitua o texto Data com o número diretamente no código. Para inserir uma string de texto, substitua o texto Data no código com "sua cadeia de texto" (as aspas duplas estão incluídas).
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Atualizado por Extendoffice 2020/09/28
Dim xRg como intervalo, xCell como intervalo
On Error Resume Next
Se (Alvo.Contagem = 1) Então
Se (Não Application.Intersect(Target, Me.Range("B:B")) for Nada) Então _
Target.Offset(0, -1) = "uma string de texto" 'Ou digite diretamente um número
Application.EnableEvents = False
Set xRg = Application.Intersect(Target.Dependents, Me.Range("B:B"))
Se (não xRg é nada) então
Para cada xCell em xRg
xCell.Offset(0, -1) = "uma string de texto" 'Ou digite diretamente um número
Seguinte
Se acabar
Application.EnableEvents = True
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Estou inserindo este código em minha pasta de trabalho do Excel e nada está acontecendo. Alguém poderia por favor ajudar? Idealmente, eu gostaria que quando algo fosse colocado na coluna A, o tempo seria colocado na coluna B.
Este comentário foi feito pelo moderador no site
Oi chapo, Tente o código abaixo. Espero que eu possa ajudar. Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Atualizado por Extendoffice 2020/10/12
Dim xRg como intervalo, xCell como intervalo
On Error Resume Next
Se (Alvo.Contagem = 1) Então
Se (Não Application.Intersect(Target, Me.Range("A:A")) for Nada) Então _
Alvo.Deslocamento(0, 1) = Tempo
Application.EnableEvents = False
Set xRg = Application.Intersect(Target.Dependents, Me.Range("A:A"))
Se (não xRg é nada) então
Para cada xCell em xRg
xCell.Offset(0, 1) = Tempo
Seguinte
Se acabar
Application.EnableEvents = True
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Olá, estou usando seu código como referência. Eu quero perguntar se é possível ter o seguinte:1. Evite entradas de data duplicadas2. Tenha as 2 entradas de macro ao mesmo tempo: Target.Offset(0,-1), Target,Offset(0,1)3. Possível inserir automaticamente uma imagem na célula?
Estava tentando descobrir sozinho, mas não consigo encontrar nenhum recurso on-line que possa me ajudar
Este comentário foi feito pelo moderador no site
Olá, esta fórmula funciona muito bem. No entanto, existe uma maneira de configurá-lo para atualizar apenas a célula na coluna A se estiver vazia?  
Este comentário foi feito pelo moderador no site
Oi Matt, Desculpe, eu não entendo muito bem o que você quer dizer. Você pode tentar ser mais específico sobre sua pergunta ou fornecer uma captura de tela do que está tentando fazer?
Não há comentários postados aqui ainda
carregar mais
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos