Você está na página 1de 6

Criação de Macros com VBA

A criação de macros ou sequência de procedimentos dentro do Excel utiliza a linguagem de programação do Visual
Basic voltada para aplicações (Visual Basic for Aplications ou VBA). Esses procedimentos são chamados através dos
próprios comandos já existentes no VBA portanto, é necessário que se conheça a estrutura de cada recurso a ser
montado.

Temos dois recursos principais: a Sub (sub-rotinas ou rotinas) e a Function (funções).

Sub

Para criar uma Sub deve-se seguir a sintaxe abaixo. Como toda estrutura no VBA, devemos inicia-la com o seu nome,
no caso: Sub e termina com End Sub:
Sub <nome_da_sub>()
...
<corpo_da_sub>
...
End Sub

A Sub não recebe parâmetros para sua execução, isto é, não contém conteúdo dentro dos parênteses. O seu nome,
assim como o nome de qualquer estrutura criada no VBA, não pode conter espaço ou iniciar com números. Dentro do
corpo_da_sub é possível colocar quantos comandos e estruturas forem necessárias bem como chamar outra Sub
dentro dela.

Entre a Sub e a Function existe uma diferença principal que é o retorno de valores. A Sub não retorna valores, apenas
executa uma sequência de procedimentos que são criados dentro do seu corpo. Já a Function, quando são executadas
dentro da planilha, assim como as funções já existentes no Excel, retorna algo.

Outra diferença entre as duas estruturas é a sua chamada/execução. A Sub deve ser chamada através de algum objeto
ou botão e a Function é utilizada dentro de alguma célula em frente ao sinal de = (igual).

Function

Para criar uma Function deve-se seguir a sintaxe abaixo:


Function <nome_da_function> ( parametro1, parametro2, ... [parametroN] )
...
<corpo_da_function>
...
<nome_da_funcao> = (valor)
End Function

Na definição da Function é possível passar quantos parâmetros forem necessários , separando-os por virgula.
Lembrando que para cada parâmetro definido é necessário informar um nome e o seu tipo no seguinte formato:
<nome> As <tipo>

Por exemplo, o exemplo a seguir define um parâmetro chamado “Numero” do tipo “Inteiro”:

Numero As Integer
O comando a seguir define qual será o valor retornado pela função quando está for chamada/executada.
<nome_da_function> = (valor)

Tipos de dados

Para criar parâmetros ou variáveis no VBA é necessário identificar, além do nome, o seu tipo, que são:

Tipo Valores
Boolean Verdadeiro (true) ou falso (false)
Byte Números inteiros ente 0 e 255
Integer Números inteiros entre -32.768 e 32.767
Long Números inteiros entre -2.147.483.648 e 2.147.483.648
Date Datas
Double Números com casas decimais
Currency Formato monetário
String Conjunto de caracteres

Variáveis

As variáveis são estruturas criadas para podermos armazenar um determinado valor, seja ele atribuído diretamente,
pelo usuário ou o resultado de alguma expressão.

Para criar uma variável é necessário seguir a seguinte sintaxe:


Dim <nome_da_variavel> As <tipo>

Por exemplo:
Dim resultado As Double
Para atribuir um valor a uma variável utilizamos o sinal de = (igual), por exemplo:
resultado = (75 * 0.15) – 10

Operadores

Os operadores dentro da linguagem VBA tem a função de comparar, atribuir ou relacionar valores. Os seguintes
operadores estão disponíveis:

Operadores relacionais

Operador Condição testada Exemplos

= (Igualdade) O valor da primeira expressão é igual ao valor da segunda? 23 = 33 ' False


23 = 23 ' True
23 = 12 ' False

<> (Desigualdade) O valor da primeira expressão é diferente do valor da segunda? 23 <> 33 ' True
23 <> 23 ' False
23 <> 12 ' True

< (Menor que) O valor da primeira expressão é menor que o valor da segunda? 23 < 33 ' True
23 < 23 ' False
23 < 12 ' False
> (Maior que) O valor da primeira expressão é maior que o valor da segunda? 23 > 33 ' False
23 > 23 ' False
23 > 12 ' True

<= (Menor que ou igual a) O valor da primeira expressão é menor ou igual ao valor da segunda? 23 <= 33 ' True
23 <= 23 ' True
23 <= 12 ' False

>= (Maior que ou igual a) O valor da primeira expressão é maior ou igual ao valor da segunda? 23 >= 33 ' False
23 >= 23 ' True
23 >= 12 ' True

Operadores aritméticos

Operador Função

+ Adicionar um valor numérico para outro

- Subtrair um valor numérico do outro

* Multiplicar um valor numérico por outro

/ Dividir um valor numérico em outro

\ Localizar o quociente de um valor numérico é divi dido por outra (sem o restante)

Mod Encontrar o resto de um valor numérico é dividido por outra (sem o quociente)

^ Elevar um valor numéri co à potência de outro

Operadores lógicos

Operador Função

Not Negação

And “E” lógico (assim como usado na fórmula “SE”)

Or “Ou” lógico

Estruturas de controle

Para a construção de códigos mais elaborados e precisos, é necessário a utilização de estruturas de controle. Estas
estruturas permitem fazer decisões, repetições, desvios de fluxo, entre outras. As estruturas podem ser utilizadas em
qualquer trecho do código, inclusive dentro de outras estruturas ou nelas próprias.

Estrutura Função

If – Then - Else Testa uma determinada condição (à frente do comando If) sendo possível atribuir uma lista de
comandos caso a condição seja verdadeira ou caso a condição seja c ontrária (Else).
For - Next Instrução para executar repetidamente um determinado trecho de código

While - Wend Instrução para executar repetidamente um determinado trecho de código porém até que uma
condição deixe de ser satisfeita

Select - Case Seleciona um determinado valor e direciona o fluxo para o item que atender a mesma condição

If – Then - Else

A estrutura If-Then-Else assemelha-se à fórmula “SE” do Excel. Nela temos uma determinada condição inicial para
fazermos o teste e podemos atribuir um comando caso essa condição seja verdadeira ou, também, caso seja falsa.
Segue a sintaxe do comando:
If <condição> Then
<comandos_caso_a_condicao_seja_verdadeira>
Else
<comandos_caso_a_condicao_seja_falsa>
End If

Exemplo de utilização:
If numeroX > 0 Then
MsgBox(“O número é positivo”)
Else
MsgBox(“O número é negativo”)
End If

A utilização da negação “Else” é opcional, ou seja, é possível utilizar somente:


If numeroX > 0 Then
MsgBox(“O número é positivo”)
End If

For - Next

O comando For – Next permite a execução de uma tarefa durante um determinado número de vezes. A sua sintaxe é:
For <inicialização> To <valor_final> Step <quantidade_a_ser_incrementada>
<comandos_a_serem_repetidos>
Next

A condição “Step” não é obrigatória, ficando atribuída como padrão o passo de 1 em 1.

Para obter a soma entre todos os números de 1 a 100 pode ser montada a seguinte estrutura:
For numero = 1 To 100
Soma = numero + soma
Next
While – Wend

Também responsável por repetir uma sequência de comandos, porém enquanto uma dada condição for válida. A sua
sintaxe é:
While <condição>
<comandos_a_serem_repetidos>
Wend

Um exemplo de utilização:
Dim numero As Integer
Numero = 5

While numero > 0


MsgBox(“Numero maior que zero: ” & numero)
Numero = numero - 1
Wend

Select – Case

Utilizado para comparar uma determinada condição e aplicar situações para cada um de seus casos. Sua sintaxe é:
Select Case <expressão>
Case Is <valor_ou_condicao>
<instruções_a_serem_relizadas_para_esse_caso>
Case Is <valor_ou_condicao>
<instruções_a_serem_relizadas_para_esse_caso>
.
.
.
Case Else

<instruções_a_serem_relizadas_se_não_nenhum_caso_acima_for_validado>
End Select

É possível usar quantos “Case Is” forem necessários. Para o “Case Else” só é permitido utilizar uma vez porém, seu uso
não é obrigatório.

Exemplo de utilização:
Dim numero As Integer
numero = 2

Select Case numero


Case Is < 2
MsgBox ("O numero fornecido é menor que 2")
Case Is > 2
MsgBox ("O numero fornecido é maior que 2")
Case Else
MsgBox ("O numero fornecido é 2")
End Select

Entrada e saída de valores

Podemos receber valores de diversas maneiras porém, o comando InputBox traz uma interface para essa finalidade.
Já o comando MsgBox é responsável pela saída (exibição) de valores.
Exemplo de utilização:
Dim numero As Integer
numero = InputBox("Informe um número inteiro: ")
MsgBox ("O número digitado foi: " & numero)

Este é somente um guia introdutório para a Linguagem VBA. Caso queira mais exemplos e a lista dos possíveis
comandos a serem utilizados consulte a documentação oficial abaixo:

Referências

https://msdn.microsoft.com/pt-br/library/y4wf33f0.aspx

https://msdn.microsoft.com/pt-br/library/sh9ywfdk.aspx