Marcadores

sexta-feira, 24 de julho de 2015

Introdução ao VBA

Todos falamos alguma linguagem (você pode ser fluente em português, inglês, japonês, etc.). Assim como nós, o Excel também possui uma linguagem, na qual podemos nos comunicar. Esta linguagem é chamada de VBA (Visual Basic for Applications).

Quando você fornece instruções para o Excel utilizando sua linguagem VBA, o Excel faz o que você solicita. Isto permite que automatizemos tarefas chatas, formatar gráficos, organizar dados, etc.

 Escrevendo sua primeira macro


Para escrever seu primeiro programa VBA (macro), usaremos o gravador de macro. O gravador de macro tem a função de registrar tudo que fazemos no Excel em código VBA.

Nossa primeira Macro – Pintar()


O objetivo desta macro é simples, ela pintará as células selecionadas de verde (poderia ser qualquer cor, mas optamos pelo verde devido a combinação da cor com o tema do blog).

Abaixo mostramos a aparência da macro quando estiver pronta.



Etapas para escrever sua primeira macro


Etapa 1 – Selecione qualquer célula e inicie a gravação da macro


Vá para a guia Desenvolvedor e clique no botão Gravar Macro, mostrado na figura abaixo.


Etapa 2 – Nomeie sua macro

Especifique o nome de sua macro. Eu chamei de Pintar. Você poderá definir qualquer nome, exceto nomes que contenham espaço ou caracteres especiais (exceto sublinhado).

Clique em OK quando terminar

Etapa 3 – Preencha a cor da célula de verde

Etapa simples. Basta ir para a guia Página Inicial e preencher a cor da célula de verde

Etapa 4 – Parar a gravação

Vá para a guia Desenvolvedor e clique no botão Parar Gravação, conforme mostrado na figura abaixo



Etapa 5 - Vincule sua macro a um botão

Vá na guia Inserir e desenhe um retângulo. Insira o texto “Pintar”. Em seguida clique com o botão direito do mouse no retângulo e selecione Atribuir Macro (Figura abaixo). Na janela que abrir selecione a macro Pintar da lista e clique em OK. 



Agora é brincar com a macro.

 

Entendendo o código da Macro Pintar


Uma vez a macro estando pronta, vamos olhar por trás das cenas e entender o código. Para isto, clique no nome de sua planilha (canto inferior) e clique em Exibir Código. Com isto você abrirá o editor do Visual Basic.

Para visualizar o código da macro Pintar, clique duas vezes sobre Módulo1 na área da esquerda do Editor Visual Basic. Você verá o seguinte código:



Agora vamos analisar o código linha a linha.
  • Sub Pintar() – Esta linha diz ao Excel que nós estamos escrevendo um novo conjunto de instruções. A palavra Sub indica que as seguintes linhas de VBA são um subrotina. O final da subrotina termina no Excel com a expressão “End Sub”.
  •  Linha iniciando com aspa simples (‘) – Estas linhas são comentários. O Excel ignora tudo que vocês escrever após a aspa simples. Comentários são adicionados para melhor entendimento do código.
  • With Selection.Interior – Enquanto preencher uma célula com cor verde parece uma única etapa para você e para mim, para o computador na verdade compreende uma série de etapas, e neste caso específico o computador está alterando uma série de propriedades do interior da célula selecionada. A função With visa evitar a escrita de expressões repetidas, no caso Selection.Interior. Quando o Excel visualiza With Selection.Interior  ele entende “eu vou fazer todas as operações seguintes a Selection.Interior até eu visualizar a linha End With”.
  • Linhas Iniciadas com ponto (.) – Estas são as linhas que dizem ao Excel para formatar o interior das células. Neste caso, o mais importante é .Color=65280, que está dizendo ao Excel para preencher a cor verde.
  • End With – Isto marca o término do código With.
  • End Sub – Isto marca o fim da nossa macro Pintar().

Algumas Dicas para entender a macro melhor:

  • Mude alguma coisa - Você poderá mudar quase qualquer linha da macro e ver o que acontece. Por exemplo, mude de .Color = 65280 para .Color = 62 e salve. Em seguida rode sua macro e veja o que acontece.
  • Delete alguma coisa – Você poderá deletar algumas das linhas na macro e ver o que acontece. Remova a linha . PatternColorIndex = xlAutomatic e rode a macro novamente para ver o que acontece