Notifications
Clear all

Executar macro a partir da célula selecionada

8 Posts
3 Usuários
0 Reactions
2,266 Visualizações
(@ed_8080)
Posts: 0
New Member
Topic starter
 

Fala galera! Sou novo em programação e estou precisando de uma ajudinha!
Preciso montar um relatório que possui diversas informações e gostaria de automatizar uma parte. Tenho o código abaixo mas gostaria que a macro fosse executada a partir da célula que eu clicar, ou seja, a célula que estiver ativa.
Basicamente o que eu preciso é que o excel copie um intervalo de dados de uma coluna, transponha os dados na horizontal e exclua as linhas das quais eu copiei os dados. Tudo isso baseado sempre na célula ativa.
Em anexo compartilho uma planilha com um exemplo do que preciso.

Sub Macro1()

Range("A3:A4").Select
Selection.Copy
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
Rows("3:4").Select
Selection.Delete Shift:=xlUp
Range("A2").Select

End Sub

Desde já obrigado!!

 
Postado : 10/04/2018 7:07 am
(@pfarias)
Posts: 0
New Member
 

No VBE, dentro da janela da planilha que será executado o procedimento, use as configurações da imagem abaixo. (Worksheet / SelectionChange).

E inclua os códigos seguinte.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address(False, False) = "E2" Then
        
        'ALGORITICO AQUI
        
    End If
End Sub
 
Postado : 10/04/2018 7:46 am
(@ed_8080)
Posts: 0
New Member
Topic starter
 

Pietro... fiz exatamente o que falou mas não deu certo.. devo manter o código no módulo ou excluo? Quando excluo o módulo não aparece uma macro para eu executar!

 
Postado : 10/04/2018 8:17 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

ed_8080,

Boa tarde!

Fiz a adaptação recomendada pelo colega pfarias para você. Note que o código verificará se a célula selecionada está na coluna A, a partir da linha 2. Caso não sejam essa as referências, não funcionará corretamente.

No teste que fiz aqui está funcionando normalmente. Veja se é assim.

Observação: Nas próximas postagens de código VBA aqui no fórum, solicitamos, por gentileza, inserir o código VBA dentro da ferramenta CODE existente logo no início da caixa de mensagens.

 
Postado : 10/04/2018 10:59 am
(@ed_8080)
Posts: 0
New Member
Topic starter
 

Wagner, fiz o teste aqui mas não é exatamente o que preciso.
No arquivo de exemplo que mandei, gostaria que a macro trabalhasse da seguinte forma: Quando eu clico na célula onde se encontra o nome do ESTADO, o excel copia as 2 cidades logo abaixo e transpõe nas colunas C e D, sempre ao lado da célula onde está o ESTADO. Em seguida o excel exclui as linhas abaixo onde estavam as CIDADES.
Esta rotina seria executada sempre que eu clicar em alguma célula onde esteja um nome de ESTADO (sempre estarão na coluna A), independente se ele esteja na célula "A2" ou "A50".

Exemplo:
Se "PARANÁ" estiver na célula "A2", as cidades serão transportadas para as células "B2" e "C2" e serão excluídas as 2 linhas abaixo (onde estavam as cidades).
Se "SANTA CATARINA" estiver na célula "A5", as cidades serão transportadas para as células "B5" e "C5". E assim sucessivamente.

Ficou melhor a explicação agora?

 
Postado : 10/04/2018 11:50 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

ed_8080,

Ok, acho que entendi...

Veja se é assim.

 
Postado : 10/04/2018 12:19 pm
(@ed_8080)
Posts: 0
New Member
Topic starter
 

Deu certo, ficou muito bom!
Mais uma ajudinha, como eu faço para executar esta macro apenas quando eu quiser, ou seja, vincular esta macro a um botão, por exemplo?? Pois tem situações nas quais eu preciso clicar em alguma célula da coluna A para fazer ajustes e não quero que seja executada a macro!

Valeu pela ajuda!

 
Postado : 10/04/2018 1:08 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Segue nova versão com controle de execução.

 
Postado : 10/04/2018 6:14 pm