Abra o Excel e o VBE (Editor do Visual Basic). A menos que tenha sido alterado, a janela VBE contém o Explorador de Projetos janela e o Propriedades janela (estes podem ser acessados a partir do Visualizar cardápio).
Explorador de projeto: Funciona como um gerenciador de arquivos. Ajuda você a navegar pelo código em sua pasta de trabalho.
Janela de propriedades: Mostra as propriedades do objeto atualmente ativo (por exemplo Folha1) da pasta de trabalho atual (por exemploLivro 1).
Neste artigo, aprenderemos como é fácil gravar macros no Excel.
Exercício 1: Gravando uma Macro.
Este exercício mostra o que acontece quando uma macro é gravada e demonstra a diferença entre gravar referências absolutas e relativas.
1. Em uma planilha vazia em uma nova pasta de trabalho, selecione a célula C10
2. Inicie o Gravador de macro com opção para salvar macro em Esta apostila. Neste ponto, o VBE cria um novo Módulos pasta. É bastante seguro ir e olhar para ele - suas ações não serão gravadas. Clique no [+] ao lado da pasta e veja se o VBE colocou um módulo na pasta e o nomeou Módulo 1. Clique duas vezes no ícone do módulo para abrir sua janela de código. Volte para o Excel.
3. Certifique-se de que o Referência Relativa botão no Pare de gravar a barra de ferramentas NÃO está pressionada.
4. Selecione a célula B5 e pare o gravador.
5. Mude para o VBE e veja o código:
Intervalo ("B5"). Selecione
6. Agora grave outra macro, exatamente da mesma forma, mas desta vez com o Referência Relativa botão pressionado.
7. Mude para o VBE e veja o código:
ActiveCell.Offset (-5, -1) .Range ("A1"). Selecione
8. Agora grave outra macro, mas em vez de selecionar a célula B5, selecione um bloco de células 3x3 começando em B5 (selecione as células B5: F7)
9. Mude para o VBE e veja o código:
ActiveCell.Offset (-5, -1) .Range ("A1: B3"). Selecione
10. Reproduza as macros, tendo primeiro selecionado uma célula diferente de C10 (para Macro2 e Macro3, a célula inicial deve estar na linha 6 ou abaixo - consulte a etapa 11 abaixo)
Macro1 - sempre move a seleção para B5
Macro2 - move a seleção para uma célula 5 linhas acima e 1 coluna à esquerda da célula selecionada.
Macro3 - sempre seleciona um bloco de seis células começando 5 linhas acima e 1 coluna à esquerda da célula selecionada.
11. Execute Macro2, mas force um erro selecionando uma célula na linha 5 ou acima. A macro tenta selecionar uma célula inexistente porque seu código está dizendo para ela selecionar uma célula 5 linhas acima do ponto inicial e que está fora do topo da planilha. pressione Depurar para ser levado para a parte da macro que causou o problema.
NOTA: Quando o VBE está no modo de depuração, a linha de código que causou o problema é destacada em amarelo. Você deve "redefinir" a macro antes de prosseguir. Clique no Redefinir botão na barra de ferramentas do VBE ou vá para Executar> Reiniciar. O realce amarelo desaparece e o VBE sai do modo de depuração.
12. É importante tentar antecipar erros do usuário como este. A maneira mais simples é modificar o código para simplesmente ignorar os erros e passar para a próxima tarefa. Faça isso adicionando a linha …
Em caso de erro, continuar próximo
… Imediatamente acima da primeira linha da macro (abaixo da linha Sub Macro1 ()
13. Corra Macro2 como antes, começando muito alto na folha. Desta vez, a linha que você digitou informa ao Excel para ignorar a linha de código que não pode executar. Não há mensagem de erro e a macro sai depois de fazer tudo o que pode. Use este método de tratamento de erros com cuidado. Esta é uma macro muito simples. Uma macro mais complexa provavelmente não teria o desempenho esperado se os erros fossem simplesmente ignorados. Além disso, o usuário não tem ideia de que algo deu errado.
14. Modifique o código de Macro2 para incluir um manipulador de erros mais sofisticado, assim:
Sub Macro2 ()
On Error GoTo ErrorHandler
ActiveCell.Offset (-5, -1) .Range ("A1"). Selecione
Sair do Sub
ErrorHandler:
MsgBox "Você deve começar abaixo da linha 5"
End Sub
15. Desta vez, o usuário verá uma caixa de diálogo quando algo der errado. Se não houver erro, a linha Exit Sub faz com que a macro termine após ter feito seu trabalho - caso contrário, o usuário veria a mensagem mesmo se não houvesse erro.
Melhorar as macros gravadas
A boa maneira de aprender o básico do VBA é gravar uma macro e ver como o Excel escreve seu próprio código. Freqüentemente, porém, as macros gravadas contêm muito mais código do que o necessário. Os exercícios a seguir demonstram como você pode melhorar e simplificar o código que foi produzido por uma macro gravada.
Exercício 2: Melhorando em macros gravadas
Este exercício mostra que quando macros são gravadas, geralmente mais código é gerado do que o necessário. Ele demonstra o uso da instrução With para definir o código.
1. Selecione qualquer célula ou bloco de células.
2. Inicie o gravador de macro e chame a macro FormatCells. A configuração de referências relativas não será relevante.
3. Vá para Formato> Células> Fonte e escolher Times New Roman e vermelho.
Vamos para Padrões e escolher Amarelo.
Vamos para Alinhamento e escolher Horizontal, Centro
Vamos para Número e escolher Moeda.
4. Clique OK e pare o gravador.
5. Clique no Desfazer botão (ou Ctrl + Z) para desfazer suas alterações na planilha.
6. Selecione um bloco de células e execute o Formatar celulas macro. Observe que isso não pode ser desfeito! Digite nas células para verificar o resultado da formatação.
7. Observe o código:
Sub FormatSelection ()
Selection.NumberFormat = "$ #, ## 0,00"
Com Seleção
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientação = 0
.ShrinkToFit = False
.MergeCells = False
Terminar com
Com Selection.Font
.Name = "Times New Roman"
.FontStyle = "Regular"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
Terminar com
Com Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
Terminar com
End Sub
Altere a fonte para Times New Roman
Alterar a cor da fonte para vermelho
Altere a cor de preenchimento para Amarelo
Clique no Centro botão
Clique no Moeda botão
13. Observe o código. Você ainda consegue muitas coisas que não quer necessariamente. O Excel está gravando todos os predefinição definições. A maioria deles pode ser excluída com segurança.
14. Experimente editar diretamente no código para alterar as cores, a fonte, o formato do número, etc.
Exercício 3: Observe uma macro sendo gravada
Este exercício mostra que você pode aprender observando a construção da macro enquanto ela é gravada. É também um exemplo de quando às vezes a declaração With não é apropriada.
1. Abra o arquivo VBA01.xls.
Embora esta planilha seja visualmente boa e possa ser compreendida pelo usuário, a presença de células vazias pode causar problemas. Experimente filtrar os dados e ver o que acontece. Vamos para Dados> Filtro> Autofiltro e filtrar por região ou mês. É claro que o Excel não faz as mesmas suposições que o usuário faz. As células vazias precisam ser preenchidas.
2. Organize as janelas do Excel e do VBE (verticalmente) para que fiquem lado a lado.
3. Selecione qualquer célula dos dados. Se for uma célula vazia, deve ser adjacente a uma célula que contém dados.
4. Inicie o gravador de macro e chame a macro FillEmptyCells. Definir para gravar Referências Relativas.
5. Na janela VBE, localize e clique duas vezes no módulo (Módulo1) da pasta de trabalho atual para abrir o painel de edição e, em seguida, desligue a janela Explorador de Projetos e a janela Propriedades (apenas para liberar espaço).
6. Grave a nova macro da seguinte forma:
Passo 1. Ctrl + * (para selecionar a região atual)
Passo 2. Editar> Vá para> Especial> Espaços em branco> OK (para selecionar todas as células vazias na região atual)
Etapa 3. Digite = [UpArrow] então aperte Ctrl + Enter (para colocar sua digitação em todas as células selecionadas)
Passo 4. Ctrl + * (para selecionar a região atual novamente)
Etapa 5. Ctrl + C (para copiar a seleção - qualquer método servirá)
Etapa 6. Editar> Colar especial> Valores> OK (para colar os dados de volta no mesmo lugar, mas descartando as fórmulas)
Etapa 7. Esc (para sair do modo de cópia)
Etapa 8. Pare a gravação.
7. Observe o código:
Sub FillEmptyCells ()
Selection.CurrentRegion.Select
Selection.SpecialCells (xlCellTypeBlanks) .Select
Selection.FormulaR1C1 = "= R [-1] C"
Selection.CurrentRegion.Select
Selection.Copy
Selection.PasteSpecial Paste: = xlValues, Operation: = xlNone, SkipBlanks: = _
Falso, Transpor: = Falso
Application.CutCopyMode = False
End Sub
8. Observe o uso de espaço e sublinhado “_” para denotar a divisão de uma única linha de código em uma nova linha. Sem isso, o Excel trataria o código como duas instruções separadas.
9. Como essa macro foi gravada com comandos bem elaborados, há pouco código desnecessário. No Colar especial tudo após a palavra “xlValues” pode ser excluído.
10. Experimente a macro. Em seguida, use a ferramenta AutoFiltro e observe a diferença.