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

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

Suponha que eu tenha vários códigos de macro na minha pasta de trabalho e, agora, quero executar esses códigos com base no valor da célula. Neste artigo, falarei sobre várias situações que você pode enfrentar no seu trabalho diário ao usar o Excel.

Execute ou acione a macro se o valor da célula for maior ou menor que um valor específico com o código VBA

Execute ou acione a macro se o valor da célula for igual a um texto específico com código VBA


seta azul bolha direita Execute ou acione a macro se o valor da célula for maior ou menor que um valor específico com o código VBA

Por exemplo, se o valor na célula A1 estiver entre 10 e 50, execute macro1 e se o valor for maior que 50, execute macro2. Para resolver este trabalho no Excel, aplique o seguinte código VBA.

1. Clique com o botão direito na guia da planilha em que deseja executar a macro com base em um valor de célula e escolha 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 se o valor da célula for maior ou menor que:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
    End If
End Sub

macro de execução de doc com base no valor da célula 1

Nota: No código acima:

A1 é a célula que contém o valor específico no qual você deseja executar a macro;

Caso 10 a 50: Macro1: significa que se o valor estiver entre 10 e 50, execute Macro1;

Caso é> 50: Macro2: significa que se o valor for maior que 50, execute Macro2.

Por favor, altere esses nomes de macro e critérios de acordo com sua necessidade, e você também pode adicionar mais critérios seguindo o Estudos de script.

2. Em seguida, salve e feche esta janela de código, agora, quando o valor inserido estiver entre 10 e 50 na célula A1, Macro1 será disparado, se o valor inserido for maior que 50, Macro2 será executado.


seta azul bolha direita Execute ou acione a macro se o valor da célula for igual a um texto específico com código VBA

Se você deseja acionar a macro com base em um texto específico em uma célula, por exemplo, executar a macro1 se o texto “Excluir” for inserido, e executar a macro2 se o texto “Inserir” for digitado. O código a seguir pode lhe fazer um favor.

1. Clique com o botão direito na planilha em que deseja executar a macro com base no valor da célula e escolha 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: Executar macro se o valor da célula for um texto específico

Sub worksheet_change(ByVal target As Range)
Set target = Range("A1")
If target.Value = "Delete" Then
 Call Macro1
End If
If target.Value = "Insert" Then
Call Macro2
End If
End Sub 

macro de execução de doc com base no valor da célula 2

Nota: No código acima, “Apagar"E"inserção”São os textos de células em que você deseja executar macros, e Macro1 e Macro2 são as macros que você deseja executar com base no texto. Por favor, altere-os de acordo com sua necessidade.

2. Em seguida, salve este código e feche a janela, agora, ao inserir o texto “Excluir” na célula A1, a macro1 é acionada, se for inserido o texto “Inserir”, a macro2 será executada.


Artigos relacionados:

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

Como executar macro automaticamente antes de imprimir 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

Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade
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 que
    300
    recursos poderosos
    . Suporta Office/Excel
    2007-2019 e 365
    . Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos
    30
    -dia de avaliação gratuita. 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.
  • Aumente sua produtividade com
    50%
    , e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (15)
Avaliado 5 fora do 5 · classificações 1
Este comentário foi feito pelo moderador no site
Oi, que tal se você quiser executar uma macro com base em duas células? Uma célula sendo baseada em texto e a outra célula com valores numéricos? Então você gostaria de chamar uma macro se as duas células mostrarem exatamente o que você deseja, como "SIM" para a primeira célula e 1 para a segunda célula, caso contrário, uma caixa pop mostraria dizendo "Não encontrado".
Este comentário foi feito pelo moderador no site
Requisito:
Com base na seleção
Haverá uma lista suspensa para seguir três propriedades da mesma dimensão abaixo.
E haverá três células derivadas que serão derivadas das células (G46, G47 e G48)

Cenário:
Se eu selecionar um valor da lista suspensa do centro de custo, a célula derivada do centro de custo (K46) deve ser preenchida com o valor selecionado da lista suspensa do centro de custo (H46) e as outras duas células derivadas (K47 e k48) devem ficar em branco.

Da mesma forma, se eu selecionar o valor da lista suspensa do gerenciador de orçamento, a célula derivada do gerenciador de orçamento deve ser preenchida com o valor selecionado na lista suspensa do gerenciador de orçamento (H47) e as outras duas células derivadas (K45 e k48) devem ficar em branco.
Este comentário foi feito pelo moderador no site
Estou trabalhando com análise de resultados. Neste caso, os dados no excel ficarão assim Name, Sub name , Crade. Agora, eu quero encontrar os números de todos os candidatos aprovados ou bem-sucedidos a partir do resultado. Como posso conseguir. Porque, estou tendo 6 assuntos diferentes e seus resultados em uma única planilha do Excel. Se o aluno foi reprovado em uma matéria, ele não será um aluno bem-sucedido. Como remover seu nome em todos os assuntos.
Este comentário foi feito pelo moderador no site
Corrija o código para a mesma planilha.
PRIMEIRO CÓDIGO FUNCIONANDO PERFEITAMENTE
Private Sub Worksheet_Change (ByVal Target As Range)
If Not Intersect(Target, Range("D1")) Não é Nada Então
Selecionar intervalo de caso ("D1")
Caso "0.5": Metade
Caso "1": Um
Caso "1.25": OneVinte e Cinco
End Select
Se acabar
End Sub

SEGUNDO CÓDIGO NÃO FUNCIONA (por favor corrija o abaixo)
Subalteração Privada (Alvo ByVal como Intervalo)
If Not Intersect(Target, Range("D2")) Não é Nada Então
Selecionar intervalo de caso ("D2")
Caso "9.53": nove vírgula cinco três
End Select
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Olá, quero fazer o seguinte:
Na Cellula1, assim que ela seguramente passa para a célula de baixo, no caso A2.
Eu uso um leitor de código de barras para cadastrar produtos, e ele lê os números automaticos, ai tenho que ficar apertando ENTER para ir para celula de baixo.

Obrigado!
Este comentário foi feito pelo moderador no site
Hola, uma consulta, como se haría si por ejemplo dado un numero se pueda ejecutar las dos macros
Este comentário foi feito pelo moderador no site
Olá, Gustavo
Para resolver seu problema, aplique o seguinte código:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        If Target.Value > 10 And Target.Value < 50 Then
         macro1
         macro2
        End If
    End If
End Sub

Por favor, tente, espero que possa ajudá-lo!
Este comentário foi feito pelo moderador no site
Bom Dia,
je souhaiterais appliquer cette macro à mon code. Le problème est que la cellule s'incremente via une toupie et le code ne reconnais le changement de valeur de la cellule.
Quando je saisie la valeur manuellement celà fonctionne correctement.

Merci d'avance
Este comentário foi feito pelo moderador no site
Olá, Gilles,
Você deve inserir um Botão Girar (Controle ActiveX) primeiro e, em seguida, clique com o botão direito do mouse, escolha Ver código, em seguida, copie e cole o código abaixo entre os scripts existentes,
Dim xWSh As Worksheet
Dim xOL As OLEObject
Dim xRg As Range
Set xWSh = Application.ActiveSheet
Set xOL = xWSh.OLEObjects("SpinButton1") 'The name of the spin button
Set xRg = xWSh.Range(xOL.LinkedCell)
If IsNumeric(xRg) And xRg.Address = "$A$1" Then
        Select Case xRg.Value
        Case 10 To 50: Macro1
        Case Is > 50: Macro2
        End Select
End If

https://www.extendoffice.com/images/stories/comments/comment-skyyang/DOC-RUN-CODE.png

Por favor, tente, espero que possa ajudá-lo!
Este comentário foi feito pelo moderador no site
Oi!

Sou muito novo no VBA e tentei esta solução para uma planilha do Excel que tenho. Basicamente, tenho apenas uma longa lista no Excel, onde você na coluna T deve digitar Sim ou Não, e gostaria que, se digitado Sim, executasse uma macro ... Tentei muitas maneiras diferentes de definir o intervalo, mas nada funciona.

Sub worksheet_change(ByVal target As Range)

Definir alvo = Range("T:T")
Se target.Value = "Sim" Então
Chamar Macro1
Se acabar

End Sub

Destaco este problema (incompatibilidade de tipo de erro de tempo de execução): If target.Value = "Yes" Then

Alguém pode ajudar?

Atenciosamente, Isabela
Este comentário foi feito pelo moderador no site
Olá, Westergard
Pode ser que o seguinte código VBA possa ajudá-lo: (Observação: altere o nome do Macro1 para o seu próprio nome de código)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("T:T")) Is Nothing Then
If Target.Value = "Yes" Then
      Call Macro1
    End If
    End If
End Sub

Por favor, tente, espero que possa ajudá-lo!
Este comentário foi feito pelo moderador no site
Muito obrigado! Agora funciona :)
Este comentário foi feito pelo moderador no site
Oi,
Como modificar esta base de código no resultado do cálculo da fórmula da célula A1
Sub Planilha_Calcular()
Por favor ajude-

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Se Target.Cells.Count> 1 Then Exit Sub
Se IsNumeric(Target) And Target.Address = "$A$1" Então
Selecione Case Target.Value
Caso 10 a 50: Macro1
Caso é> 50: Macro2
End Select
Se acabar
End Sub
Avaliado 5 fora do 5
Este comentário foi feito pelo moderador no site
Olá, F.G.
Para fazer o código funcionar nas células da fórmula, aplique o código abaixo:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
    If IsNumeric(Target) And Target.Address = "$A$1" Then
        Select Case Target.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    ElseIf (Not Intersect(Range("$A$1"), Target.Dependents) Is Nothing) Then
        Set Rg = Intersect(Range("$A$1"), Target.Dependents)(1)
        Select Case Rg.Value
        Case 10 To 50: macro1
        Case Is > 50: macro2
        End Select
    End If
End Sub

Por favor, tente, espero que possa ajudá-lo!
Este comentário foi feito pelo moderador no site
Ciao skyyang. Spero tu possa aiutarmi. Há um programa em vba que se baseia em variações de preço de uma célula (E1), coletado em DDE com uma plataforma de negociação de bolsa, fissa e preços: Massimo, Minimo, Apertura, Chiusura, para poi passare alla riga sucessiva na base a um intervalo temporal definido para toda a abertura do fogo eletrônico. L'algoritmo da me sviluppato fa si che nelle colonne: "BH" e "BI" vengano visualizzati i prezzi di acquisto e di vendita, ma solo quando soddisfatte le condizioni date, altrimenti le celle non restituiscono nessun valore. Quelo di cui avrei bisogno è di un avviso sonoro .wav che mi avvisi quando viene restituito un valore, di acquisto o di vendita, de modo di non dover fissare lo schermo per 14 ore al giorno. Se você tentar inserir um código "SoundMe()" encontrado on-line, sempre haverá um novo maciço ou um novo mínimo no programa em que o programa está atualizando os preços. Você acha que o problema pode ser resolvido? Grazie per l'attenzione
Stephen
Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos

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