KutoolsforOffice — Uma solução, cinco ferramentas poderosas.Fazer mais com menos esforço.

Como guardar ou recuperar o valor anterior de uma célula modificada no Excel?

AutorSiluvia Data de Modificação

Ao editar uma célula no Excel, o valor anterior é substituído imediatamente e deixa de ser visível, salvo se anular a alteração. Caso precise preservar esse valor — seja para comparação, auditoria ou recuperação — pode capturá-lo automaticamente com uma pequena rotina VBA que regista o conteúdo anterior numa coluna auxiliar antes de cada modificação. Alternativamente, se o ficheiro estiver guardado no OneDrive ou SharePoint, pode utilizar as ferramentas do Microsoft 365, como “Mostrar Alterações” e “Histórico de Versões”, para rever as modificações efetuadas. Este tutorial apresenta ambas as abordagens, permitindo-lhe escolher a que melhor se adapta ao seu fluxo de trabalho e aos seus requisitos de governança.


Guardar o valor anterior da célula com código VBA no Excel

Imagine que tem uma tabela como a apresentada na imagem seguinte. Sempre que uma célula na coluna C for editada, poderá querer guardar o seu valor anterior na célula correspondente da coluna G ou adicioná-lo automaticamente como um Comentário, para referência e revisão futuras. Esta abordagem revela-se especialmente útil quando pretende manter um registo contínuo ou consultar valores antigos durante a introdução contínua de dados ou verificações de qualidade.

Uma captura de ecrã de uma tabela do Excel que mostra a coluna de destino para guardar os valores anteriores das células

Cenário-chave: Em folhas de cálculo onde revê ou reconcilia frequentemente alterações — como inventários, registos ou controlo financeiro — manter os valores anteriores visíveis pode economizar tempo e minimizar a perda acidental de dados.

Para começar, abra a folha de cálculo onde pretende registar os valores anteriores. Depois, siga estes passos:

1. Clique com o botão direito do rato no separador da folha e selecione «Ver Código» no menu de atalho. O Editor do Visual Basic para Aplicações (VBA) abrirá automaticamente. Veja a imagem:

Uma captura de ecrã que mostra a opção Ver Código no menu de clique com o botão direito do separador da folha do Excel

2. Na janela «Microsoft Visual Basic para Aplicações», cole o seguinte código VBA na janela de código. Esta macro guarda automaticamente o valor anterior das células da coluna de destino noutra coluna.

Antes de executar este script, certifique-se de ajustar as referências das colunas de destino no código. Nestes exemplos, «C:C» refere-se à coluna monitorizada quanto a alterações e o número "7" corresponde à coluna G, onde são armazenados os valores anteriores. Pode personalizar estas referências de acordo com o seu layout.

Código VBA: Guardar o valor anterior da célula noutra célula da coluna

Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Long
    Dim xCell As Range
    Dim xDCell As Range
    Dim xHeader As String
    Dim xCommText As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    xHeader = "Previous value :"
    x = xDic.Keys
    For I = 0 To UBound(xDic.Keys)
        Set xCell = Range(xDic.Keys(I))
        Set xDCell = Cells(xCell.Row, 7)
        xDCell.Value = ""
        xDCell.Value = xDic.Items(I)
    Next
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim I, J As Long
    Dim xRgArea As Range
    On Error GoTo Label1
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    Set xDependRg = Target.Dependents
    If xDependRg Is Nothing Then GoTo Label1
    If Not xDependRg Is Nothing Then
        Set xDependRg = Intersect(xDependRg, Range("C:C"))
    End If
Label1:
    Set xRg = Intersect(Target, Range("C:C"))
    If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = Union(xRg, xDependRg)
    ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = xDependRg
    ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then
        Set xChangeRg = xRg
    Else
        Application.EnableEvents = True
        Exit Sub
    End If
    xDic.RemoveAll
    For I = 1 To xChangeRg.Areas.Count
        Set xRgArea = xChangeRg.Areas(I)
        For J = 1 To xRgArea.Count
            xDic.Add xRgArea(J).Address, xRgArea(J).Formula
        Next
    Next
    Set xChangeRg = Nothing
    Set xRg = Nothing
    Set xDependRg = Nothing
    Application.EnableEvents = True
End Sub

Para situações em que seja preferível armazenar o valor anterior como um Comentário — útil para visualização rápida e anotação — o seguinte código VBA realiza esta tarefa automaticamente sempre que uma célula na coluna de destino for alterada:

Código VBA: Guardar o valor anterior da célula no comentário

Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Long
    Dim xCell As Range
    Dim xHeader As String
    Dim xCommText As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    xHeader = "Previous value :"
    For I = 0 To UBound(xDic.Keys)
        Set xCell = Range(xDic.Keys(I))
        If Not xCell.Comment Is Nothing Then xCell.Comment.Delete
        With xCell
            .AddComment
            .Comment.Visible = False
            .Comment.Text xHeader & vbCrLf & xDic.Items(I)
        End With
    Next
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim I, J As Long
    Dim xRgArea As Range
    On Error GoTo Label1
    If Target.Count > 1 Then Exit Sub
    Application.EnableEvents = False
    Set xDependRg = Target.Dependents
    If xDependRg Is Nothing Then GoTo Label1
    If Not xDependRg Is Nothing Then
        Set xDependRg = Intersect(xDependRg, Range("C:C"))
    End If
Label1:
    Set xRg = Intersect(Target, Range("C:C"))
    If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = Union(xRg, xDependRg)
    ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then
        Set xChangeRg = xDependRg
    ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then
        Set xChangeRg = xRg
    Else
        Application.EnableEvents = True
        Exit Sub
    End If
    xDic.RemoveAll
    For I = 1 To xChangeRg.Areas.Count
        Set xRgArea = xChangeRg.Areas(I)
        For J = 1 To xRgArea.Count
            xDic.Add xRgArea(J).Address, xRgArea(J).Text
        Next
    Next
    Set xChangeRg = Nothing
    Set xRg = Nothing
    Set xDependRg = Nothing
    Application.EnableEvents = True
End Sub

Notas sobre parâmetros:

  • O número 7 em Cells(xCell.Row,7) refere-se à coluna G. Altere este valor se quiser guardar o valor anterior noutra coluna.
  • Range("C:C")define a coluna cujas alterações serão rastreadas. Ajuste conforme necessário — por exemplo, use «D:D» para a coluna D.

3. Para ativar o suporte de dicionário para o script, aceda a «Ferramentas» > «Referências...» no editor do VBA. Na caixa de diálogo «Referências – VBAProject» que surgir, marque «Microsoft Scripting Runtime» e clique em «OK», conforme ilustrado:

Uma captura de ecrã da caixa de diálogo Referências com o Microsoft Scripting Runtime selecionado

4. Prima «Alt» + «Q» para fechar o editor do VBA e regressar à sua folha de cálculo.

A partir deste momento, sempre que um valor na coluna C for alterado, o Excel copiará automaticamente o seu valor anterior para a coluna G ou adicioná-lo-á ao comentário da célula — permitindo-lhe acompanhar e validar facilmente as alterações, com os dados históricos sempre acessíveis para revisão, auditoria ou correção de erros.

Exemplo de resultado ao guardar valores anteriores das células noutras células:

Uma captura de ecrã que mostra os valores anteriores das células guardados noutra coluna no Excel

Exemplo de resultado ao guardar valores anteriores das células em comentários:

Uma captura de ecrã que mostra os valores anteriores das células guardados como comentários no Excel

Dicas e resolução de problemas:

  • Se as macros VBA não funcionarem como esperado, verifique as definições de segurança das macros em «Ficheiro» > «Opções» > «Centro de Confiança» > «Definições de Macros» e selecione «Ativar todas as macros».
  • Revise as referências das suas colunas caso os valores não estejam a ser registados na localização pretendida.
  • Se os erros persistirem, certifique-se de que a biblioteca «Microsoft Scripting Runtime» está corretamente ativada, conforme indicado acima.

Microsoft 365 — Revise os valores anteriores e atualizados das células com Mostrar Alteraçõese Histórico de Versões

No Microsoft 365, pode auditar edições — saber quem alterou o quê e quando, incluindo os valores anteriores e atualizados — sem recorrer ao legado Controlo de Alterações. Utilize Mostrar Alterações para obter detalhes ao nível da célula e Histórico de Versões para instantâneos completos do ficheiro e restaurações.

Requisitos

  • Livro guardado no OneDrive ou no SharePoint.
  • Sessão iniciada com uma conta Microsoft 365; Guardar Automaticamente ativado, Ativado.
  • Formato moderno ().xlsx); sem utilização do Livro Partilhado (Legado).

Mostrar Alterações (auditoria ao nível da célula)

1. Abra o livro guardado na cloud e vá a Rever ▸ Mostrar Alterações para abrir o painel.
2. (Opcional) Selecione primeiro uma folha ou um intervalo para delimitar os resultados.
3. Navegue pelas entradas para ver o editor, a marca temporal e os valores antigo → novo; clique numa entrada para saltar diretamente para a célula.

Histórico de Versões (comparar e restaurar)

1. Vá a Ficheiro ▸ Informações ▸ Histórico de Versões.
2. Abra uma versão anterior para comparar; copie células ou clique em Restaurar para reverter todo o ficheiro.

  • O comando Mostrar Alterações está indisponível?Guarde o ficheiro no OneDrive ou SharePoint, ative o Guardar Automaticamente, converta-o a partir do Modo de Compatibilidade ()Ficheiro ▸ Informações ▸ Converter) e certifique-se de que o Livro Partilhado (Legado) está desativado. Se o problema persistir na versão de ambiente de trabalho, experimente utilizar o Excel para a web.
  • Segurança/bloqueios: A proteção do livro ou da folha de cálculo, a encriptação ou o IRM podem desativar a funcionalidade Mostrar Alterações.
  • Ficheiros locais: O histórico completo não é mantido para ficheiros exclusivamente locais; utilize o Histórico de Versões na cloud para obter os melhores resultados.
  • Precisa de valores escritos nas células? As funcionalidades Mostrar Alterações e Histórico de Versões são ferramentas de auditoria; para gravar o «valor anterior» numa coluna auxiliar sempre que uma célula for editada, utilize um pequeno registo VBA Worksheet_Change.

Vantagens

  • Auditoria automática de quem fez o quê e quando, com comparação entre valores anteriores e atualizados — sem necessidade de macros.
  • Multiplataforma (Windows, Mac, web) quando guardado no OneDrive/SharePoint.

Desvantagens

  • Requer armazenamento na cloud e Guardar Automaticamente; detalhe limitado a algumas edições transitórias.
  • Não preenche valores anteriores nas células; utilize VBA se for necessário para a lógica comercial.

As Melhores Ferramentas de Produtividade para o Office

🤖KUTOOLS AI Assistente: Revolucione o Análise de Dados com base em:Execução Inteligente   |  Gerar Código|  Criar fórmulas personalizadas  |  Analisar Dados e Gerar Gráficos|  Invocar Funções Aprimoradas
Funcionalidades Populares:Localizar, Destacar ou Marcar Duplicatas   |  Excluir linhas em branco   |  Combinar Colunas ou Células sem Perder Dados   |   Arredondamento sem usar fórmula...
Super PROC:VLookup com Múltiplos Critérios  |  VLookup com Múltiplos Valores  |   VLookup em Múltiplas Folhas   |   Correspondência Fuzzy....
Lista Suspensa Avançada:Criar Rapidamente Lista de Seleção   |  Lista de Seleção Dependente   |  Lista de Seleção com Múltipla Escolha....
Gestor de Colunas:Adicionar um Número Específico de Colunas|Mover Colunas|Alternar Estado de Visibilidade de Colunas Ocultas|Comparar Intervalos e Colunas...
Funcionalidades em Destaque:Grade de foco   |  Visualização de Design   |Barra de fórmulas aprimorada   | Gestor de Pastas de Trabalho e Folhas   |  Biblioteca de Recursos(Texto Automático)|  Seleção de Data   |  Consolidar Planilhas  |  Encriptar/Descriptografar Células   | Enviar Emails por Lista   |  Super Filtro   |   Filtro Especial(Filtrar Células com Fonte em Negrito/itálico/rasurado...) ...
Principais Conjuntos de Ferramentas 15:12 Ferramentasde Texto(Adicionar Texto,Excluir Caracteres Específicos, ...)|   50+Tiposde Gráfico(Gráfico de Gantt, ...)|   40+ Fórmulas Práticas(Calcular a idade com base na data de nascimento, ...)|   19 Ferramentasde Inserção(Inserir QR Code,Inserir Imagem a Partir do Caminho, ...)|   12 Ferramentasde Conversão(Converter em Palavras,Conversão de moeda, ...)|   7 Ferramentasde Mesclar e Dividir(Mesclar Linhas Avançado,Dividir Células, ...)|... e muito mais
Utilize o Kutools na sua língua preferida – suporta inglês, espanhol, alemão, francês, chinês e mais 40+ idiomas!

Potencie as suas competências no Excel com Kutools para Excel e experimente uma eficiência como nunca antes.Kutools para Excel Oferece mais de 300 funcionalidades avançadas para impulsionar a produtividade e Economizar Tempo.Clique aqui para obter a funcionalidade de que mais precisa...


Office Tab Traz uma interface com separadores para o Office e torna o seu trabalho muito mais fácil

  • Ative a edição e leitura com separadores no Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novos separadores da mesma janela, em vez de em janelas separadas.
  • Aumente a sua produtividade em 50 % e elimine centenas de cliques do rato todos os dias!

Todos os suplementos Kutools — num único instalador.

Kutools for Office reúne suplementos para Excel, Word, Outlook e PowerPoint, além do Office Tab Pro, sendo a solução ideal para equipas que trabalham em várias aplicações do Office.

ExcelWordOutlookTabsPowerPoint
  • Pacote tudo-em-um— suplementos para Excel, Word, Outlook e PowerPoint + Office Tab Pro
  • Um instalador, uma licença— configuração em minutos (pronto para MSI)
  • Funciona melhor em conjunto— produtividade simplificada em todas as aplicações do Office
  • Teste gratuito de 30 dias com todas as funcionalidades— sem registo, sem cartão de crédito
  • Melhor relação qualidade-preço— poupe face à compra individual dos suplementos