Macro que roda automaticamente

Leia também...

Subtotal

Subtotal Se você utiliza extensas listas de dados das quais precisa fazer filtros já deve ter passado por este problema. Ao filtrar uma lista de

Ler »

O segredo do quadradinho verde

Sabe o quadradinho verde que aparece no canto inferior direito de uma célula selecionada? Bom aquele quadradinho é meio que mágico, e ajuda muito na hora de disseminar fórmulas por toda a sua planilha dizendo “crescei e multiplicai-vos!”. Pois o quadradinho verde guarda um segredo, o segredo do quadradinho verde, e que também pode ser chamado de Preenchimento automático.

Ler »

Macro que roda automaticamente

Não há duvidas que as macros são uma grande mão-na-roda no Excel. É possível automatizar relatórios inteiros, sem gerar nenhum grande esforço do usuário.

Mas em muitos casos é preciso apertar algum botão ou algumas teclas de atalho para conseguir executar a macro.

Para te deixar mais preguiçoso, e te poupar milésimos de segundos, removendo a necessidade de apertar qualquer coisa para rodar seu código de macro, existe a possibilidade de fazer suas macros rodarem automaticamente quando:

  • Abrir o arquivo do Excel
  • Fechar o arquivo do Excel
  • Alguma célula específica for alterada
  • Qualquer célula em uma determinada aba for alterada

Antes de começar, um esclarecimento. Sempre que você ver escrito:

  • Manualmente – Significa que o código é executado quando a célula sofre uma alteração manual, intencional do usuário.
  • Via Fórmula – Significa que o código é executado quando a célula sofre uma alteração por conta de uma fórmula, ou seja, outra célula é alterada e a célula observada é alterada por conter uma fórmula que sofre mudanças em seu resultado.

Sem mais delongas, vamos ver como fazer isso.


Rodar macro ao abrir o arquivo do Excel

Abra o editor VBA (Alt + F11).

No menu da esquerda procure por EstaPasta_de_trabalho e selecione dando dois cliques.

Na janela à direita digite o código abaixo:

Private Sub Workbook_Open()
 
 MsgBox "Olá, bom te ver de novo!"
 
End Sub

Conforme a imagem abaixo.

Macro automática1

Curioso para saber como alterei as cores no meu código? Clique aqui para saber.

E é apenas isso! Ao inserir a macro Workbook_Open() assim que seu arquivo for aberto o Excel executará o código que estiver ali. seja ele qual for. Neste exemplo aparecerá uma caixa de texto te cumprimentando.

Altere o código para o que deseja que a macro faça e pronto.


Rodar macro ao fechar o arquivo do Excel

Funciona praticamente da mesma forma que a anterior, só muda o nome da macro, veja.

Abra o editor VBA (Alt + F11).

No menu da esquerda procure por EstaPasta_de_trabalho e selecione dando dois cliques.

Na janela à direita digite o código abaixo:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
 
 MsgBox "Tchau, volte sempre!"
 
End Sub

Conforme a imagem abaixo.

Macro automática2

Ao inserir este código, sempre antes de fechar seu arquivo o Excel ira automaticamente executar a macro, seja ela qual for. Neste exemplo irá aparecer uma caixa de mensagem dizendo tchau.


Rodar macro quando o conteúdo da célula é alterado (Manualmente)

Abra o editor VBA (Alt + F11).

No menu da esquerda procure pela aba na qual está inserida as células que você deseja rastrear sempre que sofrerem alterações e selecione dando dois cliques. No meu caso utilizei a aba Plan1(Plan1) e defini que a macro deverá ser executada sempre que uma das células do intervalo A1:B2 for alterada manualmente.

Na janela à direita digite o código abaixo:

Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, Me.Range("A1:B2")) Is Nothing Then Exit Sub
 MsgBox "Algo mudou!"
End Sub

Conforme a imagem abaixo.

Macro automática3

Está pronto, basta alterar manualmente qualquer uma das células do intervalo A1:B2 da aba Plan1 que será executada uma macro que exibirá uma caixa de mensagem, informando que algo mudou.


Rodar macro quando o conteúdo da célula é alterado (Via fórmula ou manualmente)

Abra o editor VBA (Alt + F11).

No menu da esquerda procure pela aba que deseja rastrear, no meu caso utilizei a aba Plan1(Plan1).

Na janela à direita digite o código abaixo:

Na janela à direita digite o código abaixo:

Private Sub Worksheet_Calculate()
 If Range("A1").Value <> PrevVal Then
 MsgBox "Algo mudou!"
 PrevVal = Range("A1").Value
 End If
End Sub

Conforme a imagem abaixo.

3

Porém para que funcione corretamente outras duas etapas devem ser feitas.

No menu à esquerda onde diz EstaPasta_de_trabalho você deve inserir o seguinte código:

Private Sub Workbook_Open()
 PrevVal = Plan1.Range("A1").Value
End Sub

Ele irá garantir que no momento em que o arquivo for aberto a variável que verifica se a célula A1 da Plan1 guarde o valor atual desta célula eassim que ela for alterada conseguirá fazer a comparação e detectar a mudança.

A segunda e última etapa é criar a variável PrevVal que fará todo este controle.

Crie um módulo (ou utilize um já existente) e insira o seguinte código:

Public PrevVal As Variant

Rodar macro quando um coluna ou linha sofre uma alteração (Manualmente)

Neste exemplo irei mostrar a alteração em 2 colunas, as colunas A e B. O procedimento para linha é o mesmo, basta alterar a palavra Column no código abaixo, por Row e definir as linhas.

Abra o editor VBA (Alt + F11).

No menu da esquerda procure pela aba que deseja rastrear, no meu caso utilizei a aba Plan1(Plan1).

Na janela à direita digite o código abaixo:

Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, Me.Columns("A:B")) Is Nothing Then Exit Sub
 MsgBox "Algo mudou!"
End Sub

 

5


Rodar macro quando determinada célula for selecionada

Este caso irá funcionar sempre que uma célula específica for selecionada. Neste exemplo iremos rastrear a célula A1. Os ‘$’ que aparecem no código são obrigatórios, caso contrário pode não funcionar.

Abra o editor VBA (Alt + F11).

No menu da esquerda procure pela aba que deseja rastrear, no meu caso utilizei a aba Plan1(Plan1).

Na janela à direita digite o código abaixo:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
 If Target.Address = "$A$1" Then
 Msgbox "Célula selecionada!"
 End If
End Sub

Rodar macro quando qualquer coisa for alterada (Manualmente)

A ideia é a mesma do modelo anterior, mas ao invés de definir um intervalo de colunas ou linhas, iremos definir todas as células como intervalo a ser monitorado.

Abra o editor VBA (Alt + F11).

No menu da esquerda procure pela aba que deseja rastrear, no meu caso utilizei a aba Plan1(Plan1).

Na janela à direita digite o código abaixo:

Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, Me.Cells) Is Nothing Then Exit Sub
 MsgBox "Algo mudou!"
 End if
End Sub

Rodar macro quando qualquer coisa for alterada (Via fórmula, não manualmente)

Abra o editor VBA (Alt + F11).

No menu da esquerda procure pela aba que deseja rastrear, no meu caso utilizei a aba Plan1(Plan1).

Na janela à direita digite o código abaixo:

Private Sub Worksheet_Calculate()
 MsgBox "Algo mudou!"
End Sub

Conforme a imagem abaixo.

1

Está pronto, sempre que alguma coisa for alterada manualmente na Plan1 a macro será executada.

Espero ter ajudado. Qualquer dúvida deixe seu comentário logo abaixo.


Acompanhe o Função Excel
facebook-logo youtube-logo googleplus-logo twitter-logo

E aí, o que achou?

Compartilhe

Destaques da Loja

Bolão da Copa do Mundo FIFA 2018

Com o Bolão da Copa do Mundo FIFA 2018 do Função Excel, você terá um planilha super confiável, segura, fácil de mexer e de visual super profissional para controlar o bolão com seus amigos, familiares e principalmente, os colegas de trabalho.

Saber mais »

Doação

Quer ajudar o Função Excel a se manter no ar, ou sente que merecemos um carinho por ter te ajudado a resolver algum problema com Excel? Que tal fazer uma doação?

Para doar mais que R$5,00 altere a quantidade de “compra” para que o número seja multiplicado por R$5,00.

Saber mais »

Gerador de catálogos

Com o Gerador de catálogos do Função Excel você poderá criar catálogos personalizados de maneira muito fácil e rápida.

Os catálogos são gerados em formato PDF de forma automática, basta setar as configurações desejada e o arquivo fará tudo por você.

Gere seus catálogos e alavanque suas vendas.

Saber mais »