Como gravar uma macro no excel?
PONTOS CHAVE
- Gravar uma macro significa registrar as ações que você executa no Excel.
- Você deve usar o gravador de macro para gravar uma macro.
- O gravador de macro gera o código na parte de trás enquanto você executa a atividade.
- No Excel, você não pode pausar durante a gravação de uma macro.
- O gravador de macro não cria código perfeito, portanto, limpe seu código após a gravação.
Este guia o ajudará a aprender todos os aspectos da gravação de uma macro. Você também aprenderá como limpar o código depois de salvá-lo.
Então vamos começar.
O que é gravador de macro?
Excel Macro Recorder é uma ferramenta que pode registrar (não todas) as ações que você executa no Excel e gerar código para elas. Faça uma tarefa específica uma vez e ela gerará uma macro para isso e, na próxima vez, em vez de executar essa tarefa manualmente, você precisará executar esse código.
Pense em uma câmera de vídeo, ela funciona assim e gera código para a atividade que você está realizando.
Você deve entender que pode haver momentos em que um gravador de macro não consiga fornecer código. No entanto, ainda é uma ótima maneira de aprender o código, caso você não o conheça.
Você pode encontrar o botão do gravador de macro na guia do desenvolvedor .
Usar VBA para programação no Excel é uma das habilidades avançadas do Excel e para começar a usar o VBA você precisa ser proficiente na gravação de macros.
Planejando antes de gravar uma macro
Se você quiser gravar um vídeo, é preciso fazer um pouco de planejamento antes, como criar um roteiro, ter iluminação adequada, etc.
Da mesma forma, gravar uma macro requer algum planejamento.
A questão é que você não deseja obter o código da atividade que não deseja executar ao usar a macro gravada novamente.
A melhor maneira de fazer isso é anotar as etapas que você precisa concluir e segui-las durante a gravação.
Aqui gravaremos uma macro que pode aplicar a seguinte formatação à célula selecionada:
- Cor da fonte: vermelho
- Tamanho da fonte: 12
- Estilo da fonte: Verdena
- Texto da fonte: Negrito
Como eu disse, o planejamento é essencial, e antes de gravar esta macro, há uma coisa que precisamos cuidar: selecionar a célula alvo antes de iniciarmos a gravação.
Como eu disse, o planejamento é essencial, e antes de gravar esta macro, há uma coisa que precisamos cuidar: selecionar a célula alvo antes de iniciarmos a gravação.
A razão é que se selecionarmos uma célula durante a gravação da macro, ela também salvará essa seleção.
Portanto, quando você executar esta macro novamente, ela selecionará aquela célula específica para aplicar toda a formatação a ela. Mas o que queremos é aplicar a formatação na célula que está ativa (que está selecionada).
Etapas para gravar uma macro usando o gravador de macro
Para SALVAR uma MACRO no Excel, você pode seguir os seguintes passos:
- Primeiro, selecione a célula A4 (esta é a célula onde aplicaremos a formatação e gravaremos nossa macro).
- Em seguida, vá até a “aba Desenvolvedor”, e antes de pressionar o botão “SAVE”, habilite a referência relativa (saberemos mais sobre isso em alguns minutos).
- Pressione o botão de gravação.
- E no momento em que você clicar nele, você receberá uma caixa de diálogo para preencher alguns detalhes sobre a macro que vai gravar (sim, precisamos preenchê-la).
- Nome da macro: “HighlightCell”.
- Tecla de atalho: pressione Shift+H para definir o atalho de teclado Control+Shift+H.
- Armazenar macro em: Selecione Pasta de macro pessoal.
- Descrição: Esta macro aplica uma cor vermelha, tamanho de fonte 12, estilo de fonte Verdana e deixa a fonte em negrito.
- Por fim, clique em OK.
- Neste ponto, o Excel começa a salvar tudo (você pode ver o ícone na barra de status que diz “Uma macro está gravando, clique para parar a gravação”).
- Então agora aplique as quatro formatações que decidimos.
- Cor da fonte: vermelho
- Tamanho da fonte: 12
- Estilo da fonte: Verdena
- Texto da fonte: Negrito
- Depois de fazer isso, volte para a guia do desenvolvedor e clique em “Parar gravação” ou você também pode parar a gravação na barra de status onde diz “clique aqui para parar a gravação”. cadastro”.
Parabéns! Você fez isso e neste ponto você tem uma macro salva em sua pasta de trabalho, mas agora o próximo passo é entendê-la.
Como o gravador de macro gera código
O gravador de macro gera um código para você conforme você executa as atividades.
Para entender isso, primeiro você precisa ver o código. Então para fazer isso, abra o editor Visual Basic , vá até a aba Desenvolvedor ➜ Editor Visual Basic.
E então abra o módulo1 onde você tem seu código armazenado.
Na janela de código, você pode ver todo o código gerado pelo gravador de macro junto com todos os detalhes inseridos.
Como você pode ver, o nome da macro, a tecla de atalho e a descrição estão antes do código.
Agora vamos entender o código (como eu disse anteriormente, gravador de macro não cria código perfeito, então você tem que limpá-lo toda vez, e aprenderemos isso na próxima parte).
Você concluiu todas as quatro atividades e o gravador de macro gerou o código de quatro partes.
- Na primeira parte, o código diz que a cor da fonte da célula selecionada deve ser vermelha, e para isso utilizou um valor numérico.
- A segunda parte do código indica que o tamanho da fonte das células selecionadas deve ser “12”.
- E na terceira parte diz que o estilo da fonte deveria ser “Verdana”.
- Por fim, na quarta parte diz que a fonte da célula selecionada deve estar em negrito.
Limpar macro gravada
Neste ponto, você gravou sua primeira macro e sabe como esse código é gerado. Mas você precisa limpar o código que possui no módulo.
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .TintAndShade = 0 End With With Selection.Font .Name = "Calibri" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNo .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontMinor End With With Selection.Font .Name = "Verdana" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Selection.Font.Bold = True End Sub
Se você olhar de perto, isso é muito mais longo do que as atividades que ele pode realizar. Existem muitas propriedades incluídas neste código que não são obrigatórias.
Não só com esse código, toda vez que você grava uma macro você tem que limpá-la todas as vezes.
Mas antes de começar a limpar esse código, você precisa se lembrar das quatro atividades que realizou e para as quais precisa ter código em seu módulo:
- Cor da fonte: vermelho
- Tamanho da fonte: 12
- Estilo da fonte: Verdena
- Texto da fonte: Negrito
Vamos identificar as linhas de código que realizam essas quatro atividades.
Agora que você identificou as linhas de código que realizam as atividades reais que você executou, e também temos esse código de quatro partes.
É hora de limpar o código e remover todas as linhas indesejadas. Siga os passos abaixo.
- Na PRIMEIRA parte, você precisa do código de linha que aplica a cor da fonte RED, portanto a propriedade “TintAndShade” não exige isso.
- Agora na SEGUNDA parte precisamos do tamanho da fonte, não de todas as outras propriedades, então remova-as.
- Depois disso, na TERCEIRA parte, precisamos ter a propriedade do nome da fonte, então remova todas as outras propriedades.
- Na parte QUATRO, você tem apenas uma linha de código, que deixará a fonte em negrito.
Neste ponto o código fica assim, que é muito menor que o código gerado pelo gravador de macro.
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 End With With Selection.Font .Size = 12 End With With Selection.Font .Name = "Verdana" End With Selection.Font.Bold = True End Sub
Mas você ainda pode fazer mais.
Se você observar atentamente o código, verá que ele usou “With Selection.Font” quatro vezes, mas como você está se referindo ao mesmo objeto para todas as quatro propriedades, poderá usá-lo uma vez.
Então o código final será:
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .Name = "Verdana" .Size = 12 .Bold = True End With End Sub
Ao executar esse código, ele executará as mesmas atividades que você gravou.
O que é que você fez?
No novo código, você tem apenas linhas de código que realizam as atividades necessárias.
O ponto a ser entendido aqui é que com cada objeto sempre existem propriedades, e quando o gravador de macro grava, ele adiciona todas essas propriedades a esse objeto, mesmo que você não as utilize.
É por isso que você precisa remover todas essas propriedades do código.
E a outra coisa é que mesmo que você use apenas um objeto em seu código, o gravador de macro se refere a ele repetidamente quando você realiza atividades diferentes e é por isso que você usou “Com Seleção. Fonte” uma vez e adicionou todas as propriedades abaixo dele .
Em todas as situações, para limpar qualquer código gerado pelo gravador de macro, você deve identificar as linhas reais de código que executam as atividades necessárias e remover o restante.
Ao limpar o código de macro salvo, a melhor maneira é depurar o código passo a passo.
Leia-o
- Abra o editor VBA e a janela do Excel lado a lado e pressione F8 para executar o código passo a passo.
- Como você tem a janela do Excel aberta ao lado, você pode ver qual linha de código está executando a atividade.
- E depois de identificar o código que você precisa, você pode excluí-lo, o que não é necessário.
Nomeie uma macro
Cada vez que você grava uma macro, é necessário dar um nome a essa macro, mas existem algumas regras que um nome deve obedecer:
- O nome de uma macro pode ter até 80 caracteres.
- Você não pode usar espaços, pontuação ou caracteres especiais.
- Deve começar com uma letra.
Além dessas regras, existem algumas palavras que o VBA proíbe usar como nome.
Por outro lado, é essencial usar um nome significativo em vez de nomes padrão como Macro1 ou Teste1.
Como não é possível usar espaços em um nome de macro, você pode usar um sublinhado ou colocar a primeira letra de cada palavra em maiúscula para aumentar a legibilidade.
Armazenando a macro gravada
Antes de gravar uma macro, você deve especificar onde deseja salvá-la e tem três opções para isso:
- Nova pasta de trabalho : você pode selecionar esta opção se quiser salvar sua macro em uma nova pasta de trabalho.
- Esta pasta de trabalho : Ao selecionar esta opção, você pode salvar a macro na pasta de trabalho atual.
- Pasta de trabalho pessoal de macros : Com esta opção você pode acessar macros de todas as pastas de trabalho.
Referência relativa
Ao gravar a macro acima, eu disse para você selecionar “Usar referências relativas” antes de pressionar o botão “Iniciar gravação”.
No Excel, quando você grava uma macro, o Excel usa “Referência Absoluta” por padrão. No entanto, você pode alterá-lo antes de gravar uma macro.
A questão é que usar referências relativas é crucial se você deseja que uma macro execute a atividade registrada em qualquer lugar da planilha.
Para que você entenda a diferença entre os dois modos de referência, quero que registre a atividade de duas maneiras diferentes.
- Primeiro, selecione a célula A1 e comece a gravar uma macro (sem habilitar “Usar referência relativa”), depois selecione a célula E5 .
- Você obterá o código abaixo por gravador de macro:
Sub AbsoluteReferenceMacro() Range("E5").Select End Sub
- Novamente, selecione a célula A1, habilite “Usar referência relativa” e registre a mesma atividade (selecione a célula E5).
- Mas no momento, o código que você obteve é diferente:
Sub RelativeReferenceMacro() ActiveCell.Offset(4, 4).Range(“A1”).Select End Sub
Você gravou esses dois códigos fazendo a mesma atividade, mas usando modos de referência diferentes. CERTO?
O primeiro código de macro é bastante simples de entender; diz para selecionar a célula E5.
E se você executar esta macro, ela fará a mesma coisa, que é selecionar a célula E5, qualquer célula que você tenha selecionado neste momento.
Por outro lado, o segundo código de macro diz outra coisa, e se você selecionar outra célula antes de executar este código, ele selecionará uma célula diferente.
Para que?
Quando você gravou esta macro, a célula ativa era A1, então você selecionou E5, que está quatro células abaixo e quatro células à direita da célula A1.
Agora, como você salvou esta macro com uma referência relativa, isso sempre selecionará a célula, que está quatro células abaixo e quatro células à direita da célula ativa.
Digamos que se a célula ativa for D4, ela selecionará a célula H8, que está quatro células abaixo e quatro células à direita.
Você pode alterar a referência a qualquer momento, mesmo no meio da gravação.
Quebra de macro
Infelizmente, o Excel não permite pausar uma macro durante a gravação. Isso é possível no Microsoft Word, mas não no Excel.
Se você estiver gravando uma macro onde precisa realizar muitas atividades, o melhor é gravá-la em partes para que haja menos chances de erros.
Limitações do gravador de macro
Sim, algumas limitações vêm com o gravador de macro. Há muitas coisas que você pode fazer com o código VBA, mas o gravador de macro não pode registrar todas as atividades.
- Não é possível criar uma função personalizada : o VBA permite criar uma função personalizada que você pode usar na planilha, mas isso não é possível ao gravar uma macro.
- Não é possível usar funções integradas : o VBA tem suas funções ( VBA Functions ), mas você não pode usá-las com o gravador de macro.
- Não é possível testar as condições : ao gravar uma macro, você não pode usar a instrução VBA IF Then Else para verificar as condições.
- Incapaz de fazer loop : No VBA, você pode usar instruções de loop ao escrever o código, mas isso não é possível com o gravador de macro.
- Não é possível realizar atividade com objeto : Ao gravar uma macro, você não pode executar uma ação sem realmente selecionar um objeto. Por exemplo, se quiser colocar o texto em negrito de uma célula específica, você deve primeiro selecionar essa célula.
Vale a pena usar gravador de macro?
Posso apostar que você tem essa pergunta em mente e ela é válida. Deixe-me compartilhar uma história pessoal com você para responder a essa pergunta.
Há alguns anos eu estava trabalhando em algum código VBA para inserir uma tabela dinâmica e, naquela época, não tinha conhecimento de todos os objetos que precisava usar para escrever esse código. Então o que fiz foi gravar uma macro enquanto criava manualmente uma tabela dinâmica.
A seguir, examinei este código para entender todo o processo envolvido na inserção de uma tabela dinâmica. Sim, esse código não era perfeito, mas me deu uma ideia para escrever.
O que quero dizer é que pode haver situações em que você precise escrever o código, e o gravador de macro pode te ajudar nessa hora. O gravador de macro também me ajudou a escrever códigos para este modelo de inventário .
Enrolar
Você deve se concentrar nos seguintes pontos para gravar uma macro com sucesso:
- Defina a pasta de trabalho onde você salvará a macro e fechará todas as outras pastas de trabalho.
- Certifique-se de selecionar o objeto correto para gravar a macro.
- Certifique-se de decidir se deseja usar referências absolutas ou relativas antes de salvar a macro.
- Planeje as ações que deseja realizar.
Tutoriais relacionados
Perguntas frequentes
Está no grupo de códigos na guia Desenvolvedor.
Você pode ver isso no editor do Visual Basic.
Na verdade não, você precisa limpar esse código depois de salvá-lo.