Introdução à Programação de Macros
Vamos iniciar nossa aventura no mundo da programação aprendendo como se programa uma macro. Macros são programas que pode ser acionados de fora de uma planilha e podem manipular, ler e alterar os dados contidos na planilha.
Para criarmos uma macro precisamos entrar no editor do VBA, geralmente através do menu Ferramentas|Macros|Editor VBA. Em seguida, de dentro do editor VBA, é necessário inserir um módulo, o que é feito através do menu Inserir|Módulo. Todos os programas que formos criar deverão estar contidos dentro deste módulo.
Uma macro é uma sequência de comandos que deve estar contida dentro do seguinte formato:
Sub <NomeSub>( ) ... End Sub
Uma vez que a macro esteja programada (ver abaixo), podemos ativá-la ou invocá-la.
A invocação de macros é feita da seguinte maneira. Acionando-se o menu Ferramentas|Macros aparecerá uma janela contendo uma lista de todas as macros existentes nos módulos do programa. Basta selecionar uma macro desejada nesta lista, e acionar o botão Executar. A macro será executada.
O Corpo de uma Macro
O Corpo de uma macro (representado pelos ... acima) tem duas partes.
A parte inicial é a declaração de variáveis. Estas declarações descrevem ao programa o tipo de variável que o programa poderá manipular. Variáveis representam posições na memória que o programa poderá usar. por exemplo
Dim Soma As Double Dim Media As Double Dim Valor As Double
É muito importante usar nomes para variáveis que sejam significativos para o que se deseja armazenar nelas. Se bem que o nome utilizado para as variáveis não influencia o comportamento do programa.
A segunda parte do corpo de um programa são os comandos. Antes de falarmos em comandos, precisamos falar sobre comentários. Comentários são textos que podem ser inseridos em diversas partes de um programa e que são ignorados na hora da execução. No entanto, comentários servem para clarificar determinados pontos de um programa.
Em VBA um comentário é iniciado pelo símbolo de apóstorofo: ' . E o comentário vai até o final da linha, ou seja:
' Isto é um comentário.
De posse dos comentários, podemos ver os primeiros comandos do VBA.
Comandos de Atribuição de Valores a Variáveis
Para alterarmos o valor de uma variável, usamos um comando de atribuição. Por exemplo, suponhamos que temos três variáveis internas num programa simultaneamente declaradas em seu início:
Dim X As Integer, Y As Integer, Z As Integer
Para alterarmos o valor de X podemos escrever
X = 0e se lê "a variável X recebe o valor 1". Neste caso estamos armazenando o valor 1 em X. Este comando NÃO É UMA IGUALDADE, pois não estamos fazendo X ser um sinônimo de 0, mas estamos temporariamente fazendo que X armazene o valor 0. Em seguida poderíamos fazer
X = 1o que está perfeitamente correto como uma atribuição, (mas como igualdade seria uma inconsistência, pois implicaria que 0 = 1!!!).
A atribuição, ao contrário da igualdade, é direcional. A variável X pode armazenar o valor 1, mas o valor 1 não pode armazenar a variável X. Desta forma, o comando 1=X ESTÁ ERRADO E NÃO PODE SER CONSIDERADO O MESMO QUE X=1.
Ou seja, o lado esquerdo do símbolo = numa atribuição só pode ser uma variável. O lado direito pode ser qualquer expressão aritmética. Por exemplo, se imediatamente após X=1 encontrarmos no programa a atribuição:
Y = X + 2então sabemos que a variável Y recebe o valor 3, computado ao acessarmos o valor de X (1) e somarmos este valor a 2.
As variáveis podem variar (óbvio), portando o valor de cada variável depende da posição no programa. Por exemplo
Z = 1 'Posição 1 Z = X + Y 'Posição 2Vemos que na Posição 1 (após a execução do comando) o valor da variável Z é 1; e na Posição 2 o valor da variável é 5 (supondo que X armazena 2 e Y armazena 3).
Expressões aritméticas em VBA
O lado direito (e apenas o lado direito) de uma atribuição de uma variável do tipo Integer ou Double pode ser uma expressão artimética.
As expressões aritméticas podem envolver números inteiros (Integer) ou reais (Double) nos quais a separação entre a parte inteira e a fracionária é feita utilizando-se o '.', por exemplo, 2.54 e 0.20.
Além de números, as expressões aritméticas podem envolver variáveis do tipo Integer e Double.
Os operadores que podem ser utilizados são: +, -, *, / (divisão real), (divisão inteira) e (potenciação).
Chamadas a outras funções também podem aparecer em expressões aritméticas em qualquer lugar em que uma variável pode ocorrer (veremos mais sobre isso adiante).
Leitura e Escrita de Dados em uma planilha
Para fazermos as manipulações de dados já sabemos usar variáveis, expressões aritméticas e o comando de atribuição. No entanto, para escrevermos programas precisamos ler dados da planilha e escrever dados numa planilha.
Vamos pensar que a planilha é uma Matriz de ordem 2x2. A posição (I, J) da matriz corresponde à linha I e à coluna J. De maneira geral o valor da planilha que fica na posição na interseção da linha I com a coluna J pode ser lido através do comando
Valor = Cells( I, J )onde Valor é qualquer variável já declarada no programa.
Por outro lado, para escrever um valor na posição (I, J) da planilha, basta usar o comando:
cells( I, J ) = <expressão>onde <expressão> pode ser qualquer expressão artimética, desde uma constante numérica ou uma variável, até uma expressão que realiza um cálculo complexo.
E, por fim, se quisermos simplesmente apagar um valor contido numa célula, podemos usar
cells( I, J ) = Empty
Primeira Macro
Estamos agora em condições de escrever nossa primeira macro. Vamos então escrever um programa que calcula a média das primeira quatro posições da coluna A de uma planilha, e escreve esta média na posição A5.
Sub MediaColunaA() 'Tira a média das 4 primeiras posições da _ coluna A colocando a resposta na posicao A5. 'Declaração de variávaies Dim Soma As Double Dim Media As Double Dim Valor As Double 'Inicialização Soma = 0 'Le 4 Posições e acumula soma Valor = Cells(1, 1) 'A1 Soma = Soma + Valor Valor = Cells(2, 1) 'A2 Soma = Soma + Valor Valor = Cells(3, 1) 'A3 Soma = Soma + Valor Valor = Cells(4, 1) 'A4 Soma = Soma + Valor 'Finalização Media = Soma / 4 Cells(5, 1) = Media End Sub
O mesmo programa poderia ter sido feito numa única linha:
Sub mediaNumaLinhaSó() Cells(5, 1) = (Cells(1, 1) + Cells(2, 1) + _ Cells(3, 1) + Cells(4, 1)) / 4 End Sub
O Comando de Repetição
Suponhamos agora que queremos computar a média de um número N genérico de posições da coluna A, e que este número N esteja na célula B1 da planilha.
Sub mediaGenerica() 'Lê o numero de N posicoes em B1 e calcula a _ média das N primeiras posições da coluna A Dim N As Integer Dim Soma As Double Dim Valor As Double Dim lin As Integer 'Inicialização N = Cells(1, 2) 'B1 Soma = 0 lin = 1 Do While lin <= N '1. Lê novo valor Valor = Cells(lin, 1) '2. Acumula a soma Soma = Soma + Valor '3. Próxima linha lin = lin + 1 Loop 'Finalização Cells(N + 1, 1) = Soma / N End Sub
Sub elevadoA() 'N = A1, M = B1, escreve em C1 N elevado a M Dim N As Integer, M As Integer Dim cont As Integer, prod As Integer 'Inicialização cont = 0 prod = 1 N = Cells(1, 1) 'A1 M = Cells(1, 2) 'B1 Do While cont < M prod = prod * N cont = cont + 1 Loop 'Finalização Cells(1, 3) = prod 'C1 End Sub
Um arquivo MS-Excel contendo os programas acima pode ser obtido aqui.
Ver a lista de exercícios
Voltar à página principal.