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

Como executar a macro quando o valor da célula muda no Excel?

Normalmente, no Excel, podemos pressionar a tecla F5 ou o botão Executar para executar o código VBA. Mas, você já tentou executar o código de macro específico quando o valor de uma célula muda? Neste artigo, vou apresentar alguns truques rápidos para lidar com esse trabalho no Excel.

Executar ou chamar a macro quando um valor de célula específico for alterado com o código VBA

Executar ou chamar a macro quando qualquer valor de célula mudar em um intervalo com o código VBA


seta azul bolha direita Executar ou chamar a macro quando um valor de célula específico for alterado com o código VBA

Para executar um código de macro alterando um valor de célula, o seguinte código VBA pode fazer um favor, faça o seguinte:

1. Clique com o botão direito na guia da planilha em que deseja executar a macro se o valor da célula mudar e, a seguir, Ver código a partir do menu de contexto, e no aberto Microsoft Visual Basic para aplicativos janela, copie e cole o seguinte código no módulo em branco:

Código VBA: execute a macro quando o valor da célula mudar:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call Mymacro
    End If
End Sub

doc executar macro se a célula mudar 1

Nota: No código acima, A1 é a célula específica na qual você deseja executar o código, Mymacro é o nome da macro que você deseja executar. Altere-os de acordo com sua necessidade.

2. E então salve e feche a janela de código, agora, ao inserir ou alterar o valor na célula A1, o código específico será acionado de uma vez.


seta azul bolha direita Executar ou chamar a macro quando qualquer valor de célula mudar em um intervalo com o código VBA

Se você deseja executar ou acionar uma macro quando o valor de qualquer célula muda em um intervalo de células, o código a seguir pode ajudá-lo.

1. Clique com o botão direito na guia da planilha em que deseja executar a macro se o valor da célula mudar e, a seguir, Ver código a partir do menu de contexto, e no aberto Microsoft Visual Basic para aplicativos janela, copie e cole o seguinte código no módulo em branco:

Código VBA: execute a macro quando qualquer valor de célula for alterado em um intervalo:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub

doc executar macro se a célula mudar 2

Nota: No código acima, A1: B100 são as células específicas nas quais você deseja executar o código, Mymacro é o nome da macro que você deseja executar. Altere-os de acordo com sua necessidade.

2. E então salve e feche a janela de código, agora, ao inserir ou alterar o valor em qualquer célula de A1: B100, o código específico será executado de uma vez.


Remova todas as macros de várias pastas de trabalho

Kutools for Excel's Remoção em lote de todas as macros O utilitário pode ajudá-lo a remover todas as macros de várias pastas de trabalho conforme necessário. Baixe e teste grátis Kutools para Excel agora!

Kutools for Excel: com mais de 300 suplementos úteis do Excel, grátis para testar sem limitação em 30 dias. Baixe e teste grátis agora!


Artigos relacionados:

Como executar macro automaticamente antes de imprimir no Excel?

Como executar macro com base no valor da célula no Excel?

Como executar a macro com base no valor selecionado da lista suspensa no Excel?

Como executar macro clicando em hiperlinks no Excel?

Como executar macro quando a planilha é selecionada em uma pasta de trabalho?


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 (17)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Este módulo não está funcionando para mim. Diz que quando o VALOR da célula mudar, ele executará o código. Acho que se eu TYPE na célula funciona, mas se o valor da célula for alterado por uma fórmula, por exemplo uma Conta, então ela não executa. Você tem uma solução para executar uma macro quando o VALOR muda por meio de uma fórmula? Obrigado, Wayne
Este comentário foi feito pelo moderador no site
Mesmo problema do Wayne. Qualquer ajuda muito apreciada! Obrigado Ronnie
Este comentário foi feito pelo moderador no site
Olá, pessoal,

Sim, o código acima só está disponível quando o valor da célula é alterado manualmente, se você precisar executar um código de macro específico automaticamente quando o resultado da fórmula mudar com suas células relativas, visite este artigo:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
Por favor, tente, e espero sua resposta.
Este comentário foi feito pelo moderador no site
Não está funcionando... e estou alterando o valor da célula manualmente. Existe alguma pré-configuração que deve ser configurada?
Este comentário foi feito pelo moderador no site
Teste isso no procedimento e use como parâmetro


Sub-Planilha Privada_Change (ByVal Target As Range)

MsgBox Target.Address & "-" e Target.AddressLocal

End Sub
Este comentário foi feito pelo moderador no site
Sim, a descrição diz que deve disparar quando o valor muda, mas o segundo código diz que é quando o valor não é nada, e o primeiro também não dispara quando um valor muda, mas se eu pressionar F5 ao olhar o código, ele quer para acionar MyMacro, mas não parece reagir a mudanças de valor tanto quanto ir de nada para algo ou oposto.
Este comentário foi feito pelo moderador no site
Isso funcionou pela primeira vez para mim usando a lista de validação de dados que exibe texto com base na seleção da lista.
Este comentário foi feito pelo moderador no site
Funcionou muito bem para mim! Meu dilema é que quero que seja uma macro de referência relativa e há uma diferença entre pressionar enter para salvar a entrada e excluir para limpar a célula.
Este comentário foi feito pelo moderador no site
Ei, código útil. Eu estava pensando se era possível inserir um anel ao redor das células que são alteradas à medida que são alteradas? E redefinir os círculos toda segunda-feira?
Este comentário foi feito pelo moderador no site
Olá, Kevin,
Aqui não tem ideia para resolver o seu problema, se tiver alguma boa solução, por favor comente aqui.
Este comentário foi feito pelo moderador no site
A macro que você está chamando onde você tem isso localizado? Eu tenho o meu na pasta Módulos mas quando coloco qualquer valor em qualquer célula da planilha recebo um erro de compilação dizendo:
Variável ou procedimento esperado, não módulo.

Por favor me ajude.
Este comentário foi feito pelo moderador no site
Olá, DrCartwright,
Desculpe por te responder tão tarde.
Sim, como você disse, o código da macro deve estar localizado no Módulo e você precisa alterar o nome do código para seu próprio nome conforme a captura de tela mostrada a seguir:
Este comentário foi feito pelo moderador no site
Oi boa tarde
quisiera saber el codigo para que se ativo uma macro cuando cambia o valor de uma celda de uma coluna, pero este valor cambia por formula,sin que el usuario introduzca ningun valor.
Este comentário foi feito pelo moderador no site
Olá pessoal, estou resolvendo o seguinte problema: quero raspar um título de site quando o link for inserido na coluna A e colocar esse valor na célula relevante (ao lado dela) na coluna B. O problema parece ser que assim que colo o website na coluna A, o código executa novamente a lista inteira da coluna A2 até a "última linha", conforme definido no código. Existe alguma maneira de modificar apenas a coluna B uma vez que uma única coluna A é modificada? Ou seja, se eu colar um link na coluna A36, recebo um título em B36, independentemente de a célula estar no meio do intervalo usado ou na parte inferior. Eu gostaria de usar isso sem ter que executar novamente várias entradas como está atualmente; (ou seja, o loop "para i = 2 até a última linha")? Além disso, gostaria de alterar o abaixo da macro modular, ou seja, sub para sub privado, reagindo à mudança (ou seja, função de interseção) onde o 'alvo' é qualquer célula do intervalo A: A. Muito Obrigado!


Sub get_title_header()



Dim wb como objeto

Dim doc como objeto

Dim sURL como string

Dim lastrow por muito tempo

lastrow = Sheet1.Cells(Rows.Count, "A").End(xlUp).row



Para i = 2 Para a última linha

Set wb = CreateObject("internetExplorer.Application")

sURL = Células(i, 1)



wb.navigate sURL

wb.Visible = False



Enquanto wb.Ocupado

DoEvents

Wend



''Documento HTML

Definir doc = wb.document



Células(i, 2) = doc.Título



Em erro GoTo err_clear

Células(i, 3) = doc.GetElementsByTagName("h1")(0).innerText

err_clear:

Se Err <> 0 Então

Err.Clear

Retomar Avançar

Se acabar

wb.Sair

Range(Cells(i, 1), Cells(i, 3)).Columns.AutoFit

Proximo eu



End Sub




Obrigado!
Este comentário foi feito pelo moderador no site
Estou tentando automatizar 1 pasta de trabalho (BOM) quando outra pasta de trabalho (Status das peças) faz alterações. O arquivo de status das peças é atualizado a cada 15 minutos. Preciso saber como automatizar uma coluna específica quando ocorrem essas alterações? Alguma ideia
Este comentário foi feito pelo moderador no site
Estou usando o código abaixo para ocultar várias colunas dependendo da seleção de uma caixa suspensa localizada na célula C3, mas depois que um cálculo é realizado em qualquer lugar da planilha, TODAS as colunas se tornam UNHIDDEN. Como faço para corrigir isso?

Private Sub Worksheet_Change (ByVal Target As Range)

Columns("D:F").AutoAjuste

Dim Proj1 como String
Dim Proj2 como String
Dim Proj3 como String
Dim Proj4 como String
Dim Proj5 como String
Dim Proj6 como String
Dim Proj7 como String
Dim Proj8 como String
Dim Proj9 como String
Dim Proj10 como String

Proj1 = ActiveWorkbook.Sheets("Projetos").Range("A1").Value
Proj2 = ActiveWorkbook.Sheets("Projetos").Range("A2").Value
Proj3 = ActiveWorkbook.Sheets("Projetos").Range("A3").Value
Proj4 = ActiveWorkbook.Sheets("Projetos").Range("A4").Value
Proj5 = ActiveWorkbook.Sheets("Projetos").Range("A5").Value
Proj6 = ActiveWorkbook.Sheets("Projetos").Range("A6").Value
Proj7 = ActiveWorkbook.Sheets("Projetos").Range("A7").Value
Proj8 = ActiveWorkbook.Sheets("Projetos").Range("A8").Value
Proj9 = ActiveWorkbook.Sheets("Projetos").Range("A9").Value
Proj10 = ActiveWorkbook.Sheets("Projetos").Range("A10").Value

Dim xRG como intervalo
Dim xHRow como inteiro
Definir xRG = Range("C3")
Se não se cruzar (alvo, xRG) não é nada, então

Se Target.Value = Proj1 Então
Application.Columns("E:F").Hidden = True
Application.Columns("D").Hidden = False

ElseIf Target.Value = Proj2 Then
Range("D:D, F:F").EntireColumn.Hidden = True
Application.Columns("E").Hidden = False

Se acabar
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Isso é exatamente o que eu estava procurando ir. Quando um usuário insere um valor em uma célula, uma macro de classificação simples é executada. A macro funciona bem sozinha, mas recebo um erro de uso inválido de propriedade usando o código sugerido.

Qual poderia ser o problema?
Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos