MAC113 - Semana 02
Introdução à Programação de Macros

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 = 0
e 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 = 1
o 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 + 2
entã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 2
Vemos 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.



2006-03-15