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

 Como executar macro automaticamente quando o resultado da fórmula da célula muda?

Supondo que eu tenha uma lista de fórmulas com base nos dados da coluna A e da coluna B, conforme a captura de tela mostrada a seguir, agora, quero executar um código de macro específico automaticamente quando o resultado da fórmula muda com a mudança de células relativas. Existe alguma boa ideia para resolver esse trabalho no Excel?

Executar macro automaticamente quando o resultado da fórmula da célula mudar com o código VBA


Executar macro automaticamente quando o resultado da fórmula da célula mudar com o código VBA


O seguinte código VBA pode ajudá-lo a executar um código específico automaticamente quando a célula do resultado da fórmula mudar, faça o seguinte:

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

Código VBA: executa macro automaticamente quando o resultado da fórmula da célula muda:

Private Sub Worksheet_Calculate()
'Updateby Extendoffice
    Dim Xrg As Range
    Set Xrg = Range("C2:C8")
    If Not Intersect(Xrg, Range("C2:C8")) Is Nothing Then
    Macro1
    End If
End Sub

Nota: No código acima, C2: C8 é o intervalo de células da fórmula que você deseja usar,maco1 é o nome da macro que você deseja executar automaticamente. Por favor, mude de acordo com sua necessidade.

2. Em seguida, salve e feche esta janela de código, agora, quando os dados no intervalo A2: B8 forem alterados para causar alterações no resultado da fórmula, seu código de macro específico será acionado imediatamente.


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 (10)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Muito obrigado! Isso realmente me ajudou.
Existe algum método para recuperar o endereço da célula alterada (com fórmula, ou seja, Coluna C neste exemplo).
Obrigado.
Este comentário foi feito pelo moderador no site
Qual é o ponto da condição? Sempre retornará true... em outras palavras: será executado sem ele. Isso também é executado sempre que qualquer célula na planilha alterar o valor.
Este comentário foi feito pelo moderador no site
Então, qual é o meu nome de macro. onde posso encontrar o nome da minha macro?
Este comentário foi feito pelo moderador no site
Olá, Cenk,
O nome da macro é o código da macro que você inseriu no arquivo Excel, e você só precisa alterar a Macro1 no código acima para a sua.
Por exemplo, eu insiro um código aqui e o nome da macro é: ColorCompanyDuplicates

Sub ColorCompanyDuplicates()
'Atualizar por Extendoffice 20160704
Dim xRg como intervalo
Dim xTXT As String
Dim xCell como intervalo
Dim xChar As String
Dim xCellPre As Range
Escurecer xCIndex por muito tempo
Dim xCol como coleção
Escurecer eu enquanto
On Error Resume Next
Se ActiveWindow.RangeSelection.Count > 1 Then
xTxt = ActiveWindow.RangeSelection.AddressLocal
Outro
xTxt = ActiveSheet.UsedRange.AddressLocal
Se acabar
Set xRg = Application.InputBox("por favor selecione o intervalo de dados:", "Kutools for Excel", xTxt, , , , , 8)
Se xRg não for nada, saia do sub
xCíndice = 2
Definir xCol = Nova coleção
Para cada xCell em xRg
On Error Resume Next
xCol.Add xCell, xCell.Text
Se Err.Number = 457 Então
xCÍndice = xCÍndice + 1
Definir xCellPre = xCol(xCell.Text)
Se xCellPre.Interior.ColorIndex = xlNone Então xCellPre.Interior.ColorIndex = xCIndex
xCell.Interior.ColorIndex = xCellPre.Interior.ColorIndex
ElseIf Err.Number = 9 Então
MsgBox "Muitas empresas duplicadas!", vbCritical, "Kutools for Excel"
Exit Sub
Se acabar
Em erro GoTo 0
Seguinte
End Sub
Este comentário foi feito pelo moderador no site
desculpe, não funciona, funciona se eu colocar dados manualmente. mas eu quero trabalhar automaticamente porque meus dados estão atualizando por rand calcaulate
Este comentário foi feito pelo moderador no site
"Set Xrg = Range("C2:C8")
If Not Intersect(Xrg, Range("C2:C8")) não é nada então"
esta condição é SEMPRE encontrada....
Faz sentido ???
Ou tem algo que eu não entendi?
Este comentário foi feito pelo moderador no site
Isso mesmo, você resolveu este problema, e poderia compartilhar para mim, por favor?
Este comentário foi feito pelo moderador no site
Ola pessoal,
Eu usei o seguinte código para este problema, espero que ajude alguém:

Sub Planilha Privada_Calcular()
Valor antigo estático
If Range("MyNamedRange") <> oldValue Then
CódigoAqui
oldValue = Range("MyNamedRange").Value
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Ola pessoal,
Abaixo está o código e eu quero bloquear as células A2 e A3 depois que a célula A1 (A1 = B1+C1) estiver mudando nos resultados, altere B1 ou C1 ou ambos. Mas não funciona. Alguém poderia ajudar com isso, por favor?

Sub Planilha Privada_Calcular()

Dim sPass
sPass = "123"
Dim rng como alcance
Definir rng = [A2:A3]
Se não se cruzar (rng, [A1]) não é nada, então
Com ActiveSheet
.Desproteger Senha:=sPass
.Cells.Locked = Falso
Valor antigo estático
If Range("A1") <> oldValue Then
rng.Bloqueado = Verdadeiro
.Proteger Senha:=sPass
oldValue = Range("A1").Value

Se acabar
Terminar com

Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Olá equipe,

Eu sei que este é um tópico antigo, mas como misturar este método de cálculo e este: https://www.extendoffice.com/documents/excel/1895-excel-record-date-and-time-when-cell-changes.html?

O objetivo é registrar uma data na próxima célula toda vez que os valores calculados mudarem para cada célula em uma coluna.

Saudações,
Tiago
Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos