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

Como acionar ou executar uma macro clicando em uma célula específica no Excel?

Enquanto trabalha com o Microsoft Excel, você pode saber como executar uma determinada Macro com um Botão de Comando. Mas você sabe como executar uma macro apenas clicando em uma célula específica em uma planilha? Este artigo mostrará o método de acionar uma macro clicando em uma célula específica em detalhes.

Acione ou execute uma macro clicando em uma célula específica com o código VBA


Acione ou execute uma macro clicando em uma célula específica com o código VBA

O seguinte código VBA pode ajudá-lo a executar uma macro clicando em uma célula específica no Excel. Faça o seguinte.

1. Na planilha com a célula em que você precisa clicar para executar uma Macro, clique com o botão direito do mouse na guia da planilha e clique em Ver código no menu de contexto.

2. No Microsoft Visual Basic para Aplicações janela, copie e cole o script VBA abaixo na janela de código.

Código VBA: acione ou execute uma macro clicando em uma célula específica

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("D4")) Is Nothing Then
            Call MyMacro
        End If
    End If
End Sub

Notas:

1. No código, D4 é a célula em que você clica para executar a Macro;

2. Substitua o nome do código Minha Macro com a Macro você executará na planilha. Veja a imagem:

3. aperte o outro + Q simultaneamente para fechar o Microsoft Visual Basic para Aplicações janela.

A partir de agora, ao clicar na célula D4 na planilha atual, sua macro especificada será acionada imediatamente.


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-2021 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos de avaliação gratuita de 30 dias. 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 (37)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Acionar ou executar uma macro clicando em uma célula específica com código VBA, não foi possível fazer isso funcionar. Eu tentei de várias maneiras diferentes, mas nunca cumpriu o que foi prometido.
Este comentário foi feito pelo moderador no site
Este código só funcionará se você colocá-lo no módulo "ThisWorkbook". Não funciona em um módulo geral.
workbookname > Microsft Excel Objects > ThisWorkbook.
Este comentário foi feito pelo moderador no site
Este código funcionará no módulo de código da planilha. Você precisa clicar com o botão direito do mouse na guia da planilha e clicar em 'Visualizar código'. Isso abrirá o módulo de código apenas para essa planilha. Em seguida, cole o código mencionado.
Este comentário foi feito pelo moderador no site
Se você quiser ter várias macros, células executando macros diferentes na mesma página - isso é possível?
Este comentário foi feito pelo moderador no site
Caro Simão,
O script VBA abaixo pode ajudá-lo a executar diferentes macros clicando nas células na mesma página.

Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Se Target.Count = 1 Então
If Not Intersect(Target, Range("D4")) não é nada, então chame MyMacro1
If Not Intersect(Target, Range("D8")) não é nada, então chame MyMacro2
If Not Intersect(Target, Range("D10")) não é nada, então chame MyMacro3
Se acabar
End Sub

Por favor, adicione a linha "If Not Intersect(Target, Range("D10")) Is Nothing Then Call MyMacro" para executar mais macros clicando na célula. E altere os nomes das células e macros no código com base em suas necessidades.
Este comentário foi feito pelo moderador no site
Não está funcionando no meu Excel. O código está correto?
Este comentário foi feito pelo moderador no site
Oi camila
Desculpe pela inconveniência. Experimente o código VBA abaixo.

Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Dim xRgArr como variante
Dim xFunArr como variante
Dim xFNum como inteiro
Dim xStr As String
Dim xRg como intervalo
xRgArr = Array("A1", "D1", "C1") 'Células usadas para acionar macro
xFunArr = Array("Code name1", "Code name2", "Code name3") 'Os nomes de código correspondentes
Se Seleção.Contagem = 1 Então
Para xFNum = 0 Para UBound(xRgArr)
Definir xRg = ActiveSheet.Range(xRgArr(xFNum))
Se não se cruzar (alvo, xRg) não é nada, então
xStr = xFunArr(xFNum)
Application.Run xStr
Se acabar
Seguinte
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Isso funcionou perfeitamente e me economizará muito tempo - obrigado por compartilhar seu conhecimento - muito apreciado!
Este comentário foi feito pelo moderador no site
Fico feliz em poder ajudar.
Este comentário foi feito pelo moderador no site
Excelente. Está funcionando bem... Obrigado....
Este comentário foi feito pelo moderador no site
Oi.

Eu tenho isso funcionando bem, mas gostaria de adicionar uma condição para executar a macro. Eu só quero executar a macro se a célula ao lado da célula em que clico contiver um determinado valor.
por exemplo, quando clico na célula F6, quero que a macro seja executada se a célula E6 contiver "x", mas se a célula E6 estiver em branco, a macro não deve ser executada.
Espero que isso faça sentido.
obrigado

aqui está o meu código original sem a condição:


Opção explícita

Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Se Seleção.Contagem = 1 Então
If Not Intersect(Target, Range("F6:F18")) Não é Nada Então
Data da chamadaEscolha
Se acabar
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Oi,
O código VBA a seguir pode ajudá-lo a resolver o problema. Por favor, tente e obrigado pelo seu comentário.

Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Dim xRg como intervalo
If Not Intersect(Target, Range("F6:F18")) Não é Nada Então
Definir xRg = ActiveSheet.Cells(Target.Row, Target.Column - 1)
Se (xRg.Value = "") Ou (xRg.Value <> "X") Então Exit Sub
Escolha da data da chamada
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Obrigado, mas e as células mescladas?
Este comentário foi feito pelo moderador no site
Olá Alber,
O código não funciona para células mescladas.
Este comentário foi feito pelo moderador no site
Estou usando o OpenOffice e cliquei com o botão direito do mouse na guia da planilha e selecionei os eventos e selecionei esta macro em MyMacros .. No entanto, recebo um erro na seguinte linha: If Selection.Count = 1 Then >>> "Basic runtime error, variável não definida...
Este comentário foi feito pelo moderador no site
Oi James,
O código só funciona para o Microsoft Office Excel. Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Meu código completo nesta macro é:


Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)

Dim val As String
REM val = Range("A2").Value

Se Seleção.Contagem = 1 Então
If Not Intersect(Target, Range("D24")) Não é Nada Então
Chamada REM MyMacro
val = Range("D24").Value
Range("B27").Value = val
Se acabar
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Este tópico é muito interessante e estou interessado mas não sei onde encontrar, felizmente você cria este tópico, espero que todos me ajudem http://run-3.online
Este comentário foi feito pelo moderador no site
Excel 2002 (XP): Se uma pasta de trabalho for aberta selecionando "Arquivo" e pressionando "Shift" desativa as macros nessa planilha, o problema é que se eu selecionar "Ferramentas > Macro > Macros..." posso executar a macro enfim, como resolver?
Este comentário foi feito pelo moderador no site
Oi Roger,
Não testamos o código no Excel 2002(XP). Por que não usar a versão mais recente do Microsoft Office? Será mais fácil para o seu trabalho.
Este comentário foi feito pelo moderador no site
Mesmo resultado em 2010.
Este comentário foi feito pelo moderador no site
Por que não usar apenas uma versão mais recente, será mais fácil
https://games.lol/racing/
Este comentário foi feito pelo moderador no site
Obrigado, mas que tal várias células para clicar para executar várias macros.
Este comentário foi feito pelo moderador no site
Oi,
Experimente o código VBA abaixo.

Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Dim xRgArr como variante
Dim xFunArr como variante
Dim xFNum como inteiro
Dim xStr As String
Dim xRg como intervalo
xRgArr = Array("A1", "D1", "C1") 'Células usadas para acionar macro
xFunArr = Array("Code name1", "Code name2", "Code name3") 'Os nomes de código correspondentes
Se Seleção.Contagem = 1 Então
Para xFNum = 0 Para UBound(xRgArr)
Definir xRg = ActiveSheet.Range(xRgArr(xFNum))
Se não se cruzar (alvo, xRg) não é nada, então
xStr = xFunArr(xFNum)
Application.Run xStr
Se acabar
Seguinte
Se acabar
End Sub
Este comentário foi feito pelo moderador no site
Obrigado por este código. É possível fazer isso funcionar clicando em uma célula que é mesclada com outras?
Este comentário foi feito pelo moderador no site
Olá M.Symonds,
O código deste artigo pode fazer um favor: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Olá, eu estava tentando usar este código para executar uma macro de colagem, mas não consigo descobrir como colar a macro corretamente.

aqui está o meu Marco original

Sub Colar()
'
'Colar macro
'

'
Intervalo ("B34"). Selecione
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
Falso, NoHTMLFormatting:=Verdadeiro
End Sub


Qualquer ajuda é apreciada
Este comentário foi feito pelo moderador no site
Olá, obrigado pelo seu assunto interessante. E se por exemplo eu quiser clicar em D4 em Sheet1 e ver o resultado de Macro em Sheet2!F3.
Este comentário foi feito pelo moderador no site
Não funciona mais.
Worksheet_SelectionChange não existe por padrão. Ou seja, você não pode usar isso para acionar uma macro.

Os únicos subs incorporados que você pode usar são referenciados na lista suspensa "Pasta de trabalho", então...

A única coisa mais próxima que você pode fazer é usar Workbook_SheetBeforeDoubleClick. Mas entrará no modo de edição (ainda não é grande coisa).
Este comentário foi feito pelo moderador no site
Oi CodeKiller.Worksheet_SelectionChange só existe no editor Sheet(Code). Clique com o botão direito do mouse na guia da planilha e clique em Exibir código para ativar o editor Sheet(Code).
Este comentário foi feito pelo moderador no site
É importante ressaltar que a macro só roda na planilha.
Aqueles de nós que usam o editor básico visual comum geralmente acabam armazenando macros em outros lugares que não na planilha atual.
Nenhum desses códigos funcionará nessa situação.
Acho este código muito mais simples e funciona muito bem para mim: 

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Not Intersect(Range("d1"), Target) não é nada então
Ligue para aa
Se acabar
End Sub
Sub aa() ' coloque seu código aqui
Faixa("D1").Selecione
Selection.Copy
Range("F1").Selecione
ActiveSheet.PasteEnd Sub
John Wells
jnw.wells@gmail.com
Este comentário foi feito pelo moderador no site
Olá John Wells, obrigado por compartilhar.
Este comentário foi feito pelo moderador no site
Para aqueles que desejam que isso funcione para células mescladas, a maneira mais rápida e suja é atualizar a Linha 2 da seguinte maneira:
Opção Explícita

Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Se Seleção.Contagem > 0 Então
If Not Intersect(Target, Range("D4")) Não é Nada Então
Chamar MyMacro
Se acabar
Se acabar
End SubSelection.Count está sendo usado para determinar se uma seleção foi feita antes de executar a macro restante. Se sua seleção consistir em quatro células que foram mescladas, Selection.Count será igual a 4 e o código restante nunca será executado. Você também pode alterar a linha 2 para o número exato de células que foram mescladas, mas isso causará problemas se você mesclar células adicionais.
Este comentário foi feito pelo moderador no site
Grandioso! Grazie, era uma vida que sonhava com o poder, se poderia ser útil para qualquer um que precisasse de mais códigos em mais células para
aumentar il numero di opzioni basta aggiungere le nuove istruzionisempre sotto la stessa option explicit altrimente ci viene detto che il riferimento al
planilha não é univoco. Mi spiego meglio evidentemente su como ho adattato il code con il mio esempio;

Opção explícita
Sub Worksheet_SelectionChange particular (destino ByVal como intervalo)
Se Seleção.Contagem = 1 Então
If Not Intersect(Target, Range("Y64")) Não é Nada Então
Range("Y65:Y78").Selecione
Range("Y65").Ativar
Seleção.Limpar conteúdo
Range("Y65").Selecione
Se acabar
If Not Intersect(Target, Range("A33")) Não é Nada Então
Faixa("A33").Selecione
Selection.Copy
ActiveWindow.WindowState = xlMinimized
SendKeys "^v"
SendKeys "{BACKSPACE}"
Se acabar
Se acabar
End Sub

Grazie ancora é uma verdadeira meraviglia!

Massimo
Este comentário foi feito pelo moderador no site
Não tinha expectativas em relação a esse título, mas quanto mais me surpreendia. O autor fez um ótimo trabalho. Passei alguns minutos lendo e verificando os fatos. Tudo é muito claro e compreensível. Eu gosto de posts que preencham suas lacunas de conhecimento. Este é do tipo.
Este comentário foi feito pelo moderador no site
Olá,

No encuentro la manera de hacer lo que necesito. Espero que você possa me ajudar.
Necessário que se lance uma MACRO al hacer clic em uma celda, mas não veja qué celda va a ser, não puedo comparando com (se selecionou la celda A3, por exemplo, que se lance la acción) porque por funcionalidades del fichero, las celdas se van a mover de sitio (se han podido insertar, mas o menos filas encima). Necesitaría poder saber qué celda es la que se ha selecionado.
Alguma maneira de poder fazer isso?
Muito obrigado antecipadamente.
Este comentário foi feito pelo moderador no site
Olá Hola,
O endereço da célula é constante. Tudo o que você pode mover é o valor da célula.
A célula especificada no código VBA ainda é a célula que aciona o código VBA especificado.
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