Vous êtes sur la page 1sur 35

MDULO 1 - INTRODUO A MACROS NO EXCEL

Neste mdulo veremos os principais fundamentos sobre Macros. Conheceremos exatamente o


que uma macro, como esta definida a sua estrutura e aprenderemos a realizar algumas operaes.
Os conceitos vistos neste mdulo, sero de extrema importncia para o entendimento dos demais
mdulos.
IMPORTNCIA DA UTILIZAO DE MACROS
Em determinados problemas, que surgem durante a criao das planilhas em Excel, no
conseguimos resolv-los simplesmente utilizando os comandos e frmulas do Excel.
Nessas situaes temos que fazer uso de recursos como Macros e Programao. A linguagem
de programao do Excel o VBA Visual Basic for Applications. O VBA a linguagem de
programao para todos os aplicativos do Microsoft Office como: Word, Excel, Access e PowerPoint.
INTRODUO A MACROS
Se caso surgir uma necessidade de se executar uma tarefa vrias vezes no Microsoft Excel, ao
invs de perder tempo executando-as diversas vezes, podemos automatizar esta tarefa simplesmente
com a criao de uma macro.
Macro uma seqncia de comandos ou funes armazenados em um cdigo VBA, que pode
ser executado sempre que se precisar executar a tarefa.
As macros so uma excelente opo para automatizar tarefas repetitivas. Com o uso de macros
temos um ganho de produtividade considervel, ao evitar que tenhamos que executar manualmente,
os diversos passos de uma tarefa, passos estes que podem ser automatizados atravs do uso de uma
macro.
COMO CRIAR MACROS?
Existem duas maneiras possveis para a criao de uma macro:
Gravador de Macros Destinado a iniciantes em criao de Macros.
Cdigo VBA Destinado a profissionais que possuem uma boa lgica de programao e
que dominam a linguagem VBA.
GRAVADOR DE MACROS X CDIGO VBA
No mtodo de gravao, o Excel grava cada uma das aes que faro parte da macro e
transforma estas aes nos comandos VBA equivalentes. Quando a macro for executada, os
comandos VBA que sero efetivamente executados. Cada comando VBA corresponde a uma ao
efetiva da macro.
Por exemplo, vamos supor que por diversas vezes, voc precisa formatar uma determinada
clula com Negrito, Itlico, cor de fonte Verde, Fonte Arial com Tamanho 16. Ao invs de ter que
executar todos os comandos de formatao sempre que precisar deles, voc pode criar uma macro
que aplica todos os comando de formatao. Aps criada a macro, cada vez que voc precisar aplicar
o conjunto de comandos de formatao, basta executar a macro, bem mais fcil do que aplicar cada
comando individualmente.
Antes de gravar uma macro, planeje muito bem as etapas e os comandos que voc deseja que a
macro execute. Se cometer um erro durante a gravao da macro, as correes feitas tambm sero
gravadas como comandos da macro. Ao gravar macros, o VBA armazena cada macro em um mdulo
de cdigo VBA, anexado a uma pasta de trabalho (arquivo. xls).
Depois de gravada a macro, voc poder exibir o cdigo da macro com o Editor do VBA para
corrigir erros ou alterar a funo da macro. O Editor do VBA um programa criado para facilitar a
escrita e a edio do cdigo de macro para principiantes. Voc no precisa aprender a programar ou a
usar a linguagem do Visual Basic para fazer alteraes simples nas suas macros. Nos prximos
mdulos veremos como trabalhar melhor com o Editor do VBA.
Na figura a seguir temos um exemplo de cdigo associado a uma macro. Esse um exemplo de
cdigo VBA:

Alm disso, no Editor do VBA, podemos editar macros, copiar macros de um mdulo para o outro,
copiar marcos entre pastas de trabalho diferentes e renomear as macros. Por exemplo, se voc
quisesse que a macro formatar, da figura acima, tambm deixasse a clula formatada com
sublinhado, voc poderia gravar outra macro para aplicar o sublinhado e copiar as instrues dessa
nova macro para a macro formatar.
CRIAR UMA MACRO USANDO O GRAVADOR DE MACROS
Iremos criar uma macro chamada FormataCelula usando o gravador de macros, onde esta
macro dever formatar a clula atual com Negrito, cor de fonte Verde e com cor de plano de fundo
cinza.
Para isso, proceda da seguinte maneira:
1. Abra o arquivo Exerccio 1.xls, localizado na pasta da turma.
2. Clique a clula B5.
3. Clique o menu Ferramentas.
4. Selecione a opo Macros, clique a opo Gravar nova macro...
Sugira assim a tela Gravar macro:

5. No campo Nome da macro, digite FormataCelula.
6. No campo Tecla de atalho, digite L.
Observe que o Excel troca para Ctrl+Shift+L, pois a combinao Ctrl+L j esta associada
a outro comando do Excel.

7. No campo Descrio, digite Formata em negrito, verde e fundo cinza.
8. Clique o boto OK.
Com isso, a gravao da macro ser iniciada e todos os comandos que voc executar durante a
gravao da macro, faro parte da macro.
Perceba que uma nova barra de ferramentas chamada Parar Gravao surge, onde
atravs dela podemos interromper a gravao da macro.
A partir deste ponto, devemos executar todos os comandos que faro parte da macro.
9. Clique o menu Formatar.
10. Clique a opo Clulas.
11. Formate em Negrito, cor Verde e cor de plano de fundo cinza.
12. Clique o boto Parar Gravao , para encerrar a gravao da macro.
Com isso, a macro FormataCelula foi criada e podemos utiliz-la sempre que for
necessrio.

Para executar a macro FormataCelula, proceda da seguinte maneira:
1. Clique a prxima clula a ser formatada, exemplo C8.
2. Pressione Ctrl+Shift+L.
A macro FormataCelula executada e as informaes definidas pela macro so automaticamente
aplicadas a clula selecionada.
Uma outra maneira de executar macros utilizando o menu Ferramentas, opo Macro,
subopo Macros.
Com isso ser exibida a janela Macro, onde esto listadas as macros existentes na pasta de
trabalho atual, confirme visto na figura a seguir:

Nesta tela, voc ir selecionar o nome da macro a ser executada e clicar sobre o boto Executar.
A macro ser executada e as formataes sero aplicadas clula que estava selecionada.
Sua planilha dever exibir o seguinte aspecto:

ESTRUTURA DE UMA MACRO
Na macro criada anteriormente chamada de FormataCelula, podemos perceber que ao execut-
la os comandos de formatao so novamente executados e aplicados clula onde esta o cursor ou
na faixa de clulas selecionadas. Isto acontece porque no ato da gravao da macro o Excel gera para
cada comando que efetuamos um cdigo VBA equivalente formando assim a nossa macro.
O que iremos ver agora justamente esta estrutura que compem toda a nossa macro. Para
acessar os comandos VBA associado a uma macro, proceda da seguinte maneira:
1. Com o arquivo j aberto, clique o menu Ferramentas.
2. Selecione a opo Macro, clique a subopo Macros.
Com isso ser exibida a janela Macros.
3. Selecione a macro FormataCelula.
4. Clique o boto Editar.
Com isso o Editor do VBA ser carregado e sero exibidas as linhas de cdigo referente a nossa
macro.

Estes so os comandos VBA referentes a macro FormataCelula. Caso no entenda os
comandos, no se preocupe, pois ainda os estudaremos mais adiante.

A seguir esta descrito o que faz cada um dos principais comandos desta macro:
Estes comandos aplicam a
fonte Arial, o estilo Negrito, o
tamanho 10 e a cor de fonte
verde, para as clulas atualmente
selecionadas.


Estes comandos aplicam a
cor de plano de fundo cinza, para
as clulas atualmente
selecionadas.

5. Salve e feche o Editor do VBA.
OPERAES COM MACROS
Depois de criadas as macros podemos futuramente precisar realizar algum de tipo de alterao
nelas, seja em seu cdigo ou no comando de teclado (tecla de atalho). Podemos precisar tambm
renome-las e at mesmo exclu-las caso seja necessrio. Todas estas aes esto ligadas s
operaes com macros.
RENOMEAR UMA MACRO
Esta ao deve ser realizada toda vez que se deseja modificar o nome de uma ou mais macros
do arquivo.
Para poder renomear uma macro, proceda da seguinte maneira:
1. Com o arquivo aberto, clique o menu Ferramentas.
2. Selecione a opo Macro, clique a sub-opo Macros.
Ser exibida a janela Macros


3. Clique a macro FormataCelula para selecion-la.
4. Clique o boto Editar.
Com isso, ser aberto o Editor do VBA com o cdigo da macro, onde o nome da mesma vem
aps o comando Sub na primeira linha.
With Selection.Font
.Name = "Arial"
.FontStyle = "Negrito"
.Size = 10
.ColorIndex = 10
End With
With Selection.Interior
.ColorIndex = 48
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

5. Altere o nome da macro FormataCelula para Formatar.
6. Clique o boto Salvar.
7. Feche o Editor do VBA.
Com isso a macro foi renomeada, caso deseje confirmar, clique o menu ferramentas,
selecione a opo macro e clique na sub-opo macros, voc ver na tela que a macro
agora se chama Formatar.
ALTERANDO A TECLA DE ATALHO E A DESCRIO ASSOCIADA A MACRO
Esta ao deve ser realizada caso seja necessrio modificar por algum motivo a tecla de atalho
que esteja associada a uma macro e o seu comentrio que de extrema importncia, pois resume o
funcionamento da macro.
Para fazer a alterao, proceda da seguinte maneira:
1. Com o arquivo aberto, clique o menu Ferramentas.
2. Selecione a opo Macro, clique a sub-opo Macros.
Ser exibida a janela Macros.

3. Clique a macro Formatar para selecion-la.
4. Clique o boto Opes.
Com isso, ser exibida a janela Opes de Macro.

Nesta tela podemos fazer a alterao da tecla de atalho e da descrio atribudos macro.
5. Na Tecla de Atalho, digite: W.
6. Na Descrio, digite: Formatao em negrito, com cor verde e plano de fundo na cor
cinza.
7. Clique o boto OK.
Com isso a tecla de atalho e a descrio da macro foram alteradas.


EXCLUIR UMA MACRO
Esta ao dever ser realizada quando no houver mais a necessidade da utilizao da macro no
arquivo.
Para isto, proceda da seguinte maneira:
1. Com o arquivo aberto, clique o menu Ferramentas.
2. Selecione a opo Macro, clique a sub-opo Macros.
3. Selecione a macro a ser excluda, no nosso caso selecione a macro Formatar.
4. Clique o boto Excluir.
Com isso ir surgir uma caixa de mensagem para confirmar a excluso da macro.

5. Clique o boto Sim.
IMPORTANTE! Caso a macro esteja associada a algum controle de formulrio,
por exemplo, um boto, a simples excluso do boto NO EXCLUI A MACRO
associado a este.

Com isso a macro Formatar foi excluda do arquivo.

ASSOCIANDO MACROS A CONTROLES DE FORMULRIOS
A associao de uma macro a um controle de formulrio deve ser feita sempre que se deseja
executar uma macro de uma forma mais simples e rpida, onde ao invs de irmos no menu
Ferramentas, opo Macro, sub-opo Macros, selecionar a macro desejada e clicar o boto executar,
podemos apenas clicar sobre um boto e a macro associada a ele automaticamente executada. Esta
associao importante principalmente quando a sua planilha for usada por usurios leigos em Excel,
facilitando assim os seus trabalhos.
Para testar este recurso, iremos criar uma nova macro com o nome de Classificar, cuja tarefa
ser de classificar a tabela pelo campo Cdigo em ordem crescente, depois inserir um boto na
planilha e associ-lo a macro classificar.
Para isso, proceda da seguinte maneira:
1. Abra o arquivo Exerccio 2.xls, localizado na pasta da turma.
2. Clique o menu Ferramentas.
3. Clique a opo Macro, clique a sub-opo Gravar nova macro.
Surgir assim tela Gravar macro.
4. Em Nome da macro, digite Classificar.
5. Clique o boto OK.
Aparecer ento, a barra de ferramentas Parar Gravao.
6. Selecione a linha de cabealho da tabela correspondente ao intervalo de clulas A1:F1.
7. Pressione as teclas SHIFT + END + , com isso toda a tabela dever ser selecionada.
8. Classifique a tabela pelo campo Cdigo em ordem crescente.
9. Clique a clula A1.
10. Clique o boto Parar Gravao.
ASSOCIAR A MACRO AO BOTO
1. Clique o menu Exibir.
2. Clique a opo Barra de Ferramentas.
3. Clique a sub-opo Formulrios.
Com isso, aparecer a barra de ferramentas Controle de Formulrios.

4. Insira na planilha o controle chamado Boto.
Com isso, surgir tela Atribuir Macro.

5. Clique a macro classificar para selecion-la.
6. Clique o boto OK.
Pronto! Com isso a macro Classificar encontra-se associada ao boto, onde um simples
clique sobre este, implicar na execuo das instrues que compem a macro.
MDULO 2 - INTRODUO AO VBA NO EXCEL
Uma linguagem de programao, basicamente, uma forma que o programador tem de se
comunicar com a mquina, atravs de um conjunto de comandos, rotinas, objetos e funes que
executam tarefas especficas.
Utilizar-se do cdigo VBA para a criao das macros, oferece ao programador uma grande
quantidade de opes para solucionar problemas mais complexos e que no podem ser somente
resolvidos com o uso de comandos e funes internas do Excel.
A linguagem de programao utilizada no Microsoft Excel o VBA Visual Basic for
Applications. Com o VBA possvel que o programador tenha acesso completo a todos os objetos de
uma planilha do Excel.
Fazer uso do VBA em planilhas do Excel, garante ao programador algumas vantagens como:
Acessar dados de uma ou mais planilhas;
Manipular objetos;
Criar funes definidas pelo usurio, onde este sem dvida um dos maiores benefcios
do VBA.
Definir condies e controlar o fluxo de dados atravs de estruturas para a realizao de
testes condicionais e para a repetio de um conjunto de comandos;
Realizar clculos complexos e solucionar problemas que envolvam uma lgica complexa.
O AMBIENTE DE PROGRAMAO (EDITOR VBA)
O Microsoft Excel nos oferece um ambiente de programao bastante poderoso, com uma srie
de recursos que facilitam a criao do cdigo VBA. Dentro deste ambiente, so oferecidas uma srie
de facilidades e dicas para que o programador possa encontrar facilmente os objetos disponveis.
Para conhecermos melhor o Editor VBA temos na figura abaixo um exemplo de uma macro
chamada AplicaNegrito.

PROJETO VBA PROJECT E JANELA DE PROPRIEDADES
Dentro do Editor VBA no lado esquerdo, temos duas janelas que so de extrema importncia, a
janela do projeto o VBA Project e a Janela de Propriedades.
VBA Project Nesta janela so exibidos os vrios elementos que fazem parte da Pasta de
trabalho atual, onde so exibidas as planilhas e mdulos.

Ao criar uma macro, podemos cria-la em uma determinada planilha, mas esta somente poder
ser utilizada dentro da planilha onde ela foi criada, caso deseje criar uma macro que possa ser trabalha
em qualquer uma das planilhas do arquivo, esta dever ser criada em um dos mdulos existentes.
Podemos dentro de uma pasta de trabalho possuir diversos mdulos, principalmente quando se
tem planilhas complexas, da podemos dividir estes mdulos em categorias como, por exemplo: criar
um mdulo somente para a criao de funes para clculo de data, outro para funes de validao
de dados, outro para funes de clculos financeiros e assim por diante. Esta diviso facilita a
localizao, manuteno e alterao das funes e cdigos existentes.
Janela de Propriedades Exibe as propriedades do objeto selecionado na janela VBA Project.
Por exemplo, ao selecionar Plan1, na janela VBA Project, na janela propriedades sero exibidas
as propriedades de Plan1.

PESQUISADOR DE OBJETO
O Editor do VBA facilita muito o trabalho do programador na manipulao de um objeto pois
possui uma janela que exibe uma listagem de todas as bibliotecas disponveis, bem como a lista de
cada objeto de cada biblioteca, juntamente com todas as suas propriedades e mtodos, esta janela
chamada de Pesquisador de Objeto.
Para exibi-la proceda da seguinte maneira:
1. Dentro do Editor VBA, clique o menu Exibir.
2. Clique a opo Pesquisador de Objeto.
Com isso, ir surgir a janela do Pesquisador de Objeto.

Na lista Todas as Bibliotecas, podemos selecionar uma biblioteca especfica, para que o
pesquisador mostre somente os objetos da biblioteca selecionada.
Por exemplo, selecione a biblioteca Excel, na lista de objetos do lado esquerdo selecione o objeto
Range, com isso do lado direito do painel ser exibida uma lista com os mtodos e propriedades do
objeto Range.

Alm do Pesquisador de Objeto, o Excel oferece um outro recurso para localizar um mtodo ou
propriedade de um objeto, este recurso se d no momento da digitao do cdigo onde aps digitar o
nome do objeto sucedido de um ponto, surgir automaticamente uma lista com estes mtodos e
propriedades.

Pronto! Com isso aprendemos algumas noes bsicas sobre o Editor do VBA.
MDULO 3 VARIVEIS
Uma varivel um espao criado na memria do computador durante a execuo de um
programa, utilizado para armazenar um ou mais valores. Estes espaos so referenciados pelo
programador atravs da atribuio de nomes, ou seja, atribumos nomes as variveis utilizadas no
programa.
Elas possuem esta nomenclatura, pelo fato de poder ter o seu contedo modificado durante a
execuo do programa, da o nome Variveis.
O programador antes de utilizar a varivel dentro do cdigo, deve primeiramente declar-la, ou
seja, nas linhas iniciais do cdigo deve-se definir o nome de todas as variveis que sero utilizadas,
bem como o contedo que ser armazenado nesta, a esta definio damos o nome de Tipos de
Dados.
Tipos de Dados basicamente determinar para o programa qual o tipo do contedo que a
varivel ir armazenar, por exemplo: podemos definir que uma varivel ir armazenar somente valores
inteiros numa faixa de 0 a 250, ou podemos tambm definir que a varivel ir armazenar caracteres de
texto de tamanho varivel ou ainda definir que a varivel poder armazenar nmeros com casas
decimais. Esta definio do tipo de dados da varivel extremamente importante, pois economizamos
espao na memria do computador.
Esta economia de espao na memria atravs da definio do tipo de dados mais adequado para
uma varivel se da pelo fato de que cada tipo de dados ocupa um determinado espao em memria,
por exemplo: uma varivel do tipo de dados que armazena nmeros inteiros ocupa na memria menos
espao que uma varivel do tipo de dados que armazena caracteres de texto.
No VBA, no obrigatrio declarao de variveis. Porm recomendvel que as declaremos,
para a economia de espao mencionada anteriormente e tambm para que o cdigo fique mais claro e
de fcil compreenso.
DECLARAO DE VARIVEIS
Para a declarao de uma varivel devemos sempre utilizar o comando Dim, que vem do termo
Dimenso, seguido do nome da varivel, conforme exemplo:
Dim x
Dim nome
Dim idade
Neste exemplo, estamos apenas declarando o nome da varivel, sem declarar de que tipo (texto,
nmero inteiro, data, decimal, etc.) a varivel. Deste modo a sintaxe completa de declarao de
variveis a seguinte:
Dim nome_da_varivel As tipo_da_varivel
Podemos tambm em um nico comando Dim, declarar mais que uma varivel, sendo estas do
mesmo tipo de dados, por exemplo:
Dim idade, quantidade As tipo_da_varivel
Dim nome, produto, codigo As tipo_da_varivel.
OPTION EXPLICIT
Embora a declarao de variveis seja importante, tambm podemos utilizar variveis que no
foram, explicitamente, declaradas com o comando Dim. Com isso, a varivel criada na memria, no
momento da sua utilizao. Mas se desejar que toda varivel tenha que estar declarada para poder ser
utilizada, basta utilizar o comando Option Explicit na seo de declarao do mdulo.
Ao definirmos este comando na seo de declarao do mdulo, estamos definindo que toda
varivel deve ser declarada, antes de ser utilizada. Caso se utilize de uma varivel no declarada, ser
gerado um erro de compilao e a execuo dos comandos interrompida.
Abaixo temos um exemplo de variveis no explicitamente declaradas:
Dim num1, num2 As tipo_da_varivel
Soma = num1 + num2
Ao tentarmos executar este cdigo, estando definido o comando Option Explicit, iremos obter
uma mensagem de erro, pois utilizamos a varivel soma que no foi declarada, conforme a figura
abaixo:

TIPOS DE VARIVEIS
O tipo de uma varivel serve para determinar na memria o espao que ser alocado para
armazenar uma informao.
O tipo de varivel padro do VBA o tipo Variant, que formado por pequenas unidades,
chamadas de subtipos, onde cada subtipo identifica de que maneira os dados sero armazenados em
uma varivel do tipo Variant.
No indicado utilizar-se de variveis com o tipo Variant, pois da ser difcil restringir ao
usurio o tipo da informao que ser armazenada, exemplo: Desejo que o usurio digite
apenas nmeros inteiros. Caso a varivel que receber este nmero tenha sido declara
com o tipo Variant, o usurio poder ento digitar qualquer outra informao que no seja
um nmero inteiro.
SUBTIPOS DO TIPO VARIANT
Subtipo Significado Tamanho
Empty
Valor zero para variveis numricas ou
String de tamanho (), para variveis
de texto.
-
Boolean
Variveis que s podem assumir dois
valores: Verdadeiro ou Falso (True or
False).
2 Bytes
Byte Valor Inteiro, na faixa de 0 a 255. 1 Byte
Integer
Valor Inteiro, na faixa de -32768 a
32767.
2 Bytes
Currency
Valor real na faixa de -
923.337.203.685.447,5808 at
923.337.203.685.447,5807.
8 Bytes
Double
Valor real na faixa de
1.79769313486232E308 at
4.94065645841247E-324.
8 Bytes
Long
Valor Inteiro, na faixa de -
2.147.483.648 at 2.147.483.647.
4 Bytes
Date
(Time)
Nmero que representa a data entre
01 de janeiro do ano 100, at 31 de
dezembro de 9999.
8 Bytes
String
Texto de tamanho varivel, pode
conter, aproximadamente, 2 bilhes de
caracteres.
1 Byte por
caractere
Object
Pode conter um objeto qualquer, como
Controle ActiveX.
4 Bytes
OPERADORES ARITMTICOS
Para podermos realizar clculos entre as variveis, devemos utilizar operadores.
Abaixo segue uma tabela com os operadores aritmticos disponveis:
Operador Smbolo Descrio
Adio + Soma o valor das variveis.
Subtrao - Subtrai o valor das variveis.
Multiplicao * Multiplica o valor das variveis.
Diviso / Divide o valor das variveis.
Inteiro da
diviso entre 2
nmeros
\
Parte inteira da diviso das
variveis.
Exponenciao
^
x^y nmero x elevado a potncia
y.
Mdulo Mod Resto da diviso de 2 nmeros.
OPERADOR DE ATRIBUIO
Quando pretendemos atribuir valores as variveis, devemos indicar o nome da varivel, seguido
do operador (=) e o valor a ser armazenado na varivel.
Como exemplo observe o cdigo a seguir:
Nome = Fbio Abreu
Qtd = 86
No cdigo acima a varivel Nome esta armazenando o texto Fbio Abreu e a varivel Qtd esta
guardando o nmero 86.

OPERADORES RELACIONAIS
Para podermos estabelecer relaes entre as variveis, devemos utilizar operadores.
Abaixo segue uma tabela com os operadores relacionais disponveis:
Operador Smbolo
Maior >
Menor <
Maior ou Igual >=
Menor ou Igual <=
Diferente <>
Igual =
EXERCCIO 1
Para utilizarmos os conceitos vistos at aqui, proceda da seguinte maneira:
1. Abra o arquivo Exerccio 3.xls, localizado na pasta da turma.
2. Abra o Editor do VBA.
3. Abra o mdulo chamado Mdulo1.
Com isso, ir aparecer uma macro chamada calcular.

Dentro desta macro, digite o seguinte cdigo:


4. Depois de digitado o cdigo aperte a tecla de atalho F5, para executar a macro.
Ser exibida uma caixa de mensagem:

5. Clique em OK.
Ser exibida uma caixa de mensagem:

6. Clique em OK.
Ser exibida uma caixa de mensagem:

7. Clique em OK.
Ser exibida uma caixa de mensagem:

8. Clique em OK.
Ser exibida uma caixa de mensagem:

9. Clique em OK.
Ser exibida uma caixa de mensagem:

10. Clique em OK.
Ser exibida uma caixa de mensagem:

Neste exerccio, utilizamos operadores aritmticos para realizar operaes com os valores das
variveis num1 e num2.
Alm disso, fizemos uso de uma funo chamada Msgbox, que exibe mensagens em uma
pequena janela, chamada de Pop-Up e utilizamos tambm o operador de concatenao (&).
VARIVEIS - ARRAYS
Uma varivel que representa um conjunto de variveis do mesmo tipo.
Um array pode ser unidimensional ou bidimensional.







ARRAY UNIDIMENSIONAL
Constitudo por uma nica lista de elementos indexveis, onde possumos um elemento inicial e
outro elemento final, sendo que cada elemento da lista corresponde a um nico ndice.
0
1
2
3
4
5
ARRAY BIDIMENSIONAL
Um pouco mais complexo que o unidimensional, constitudo por um conjunto de listas do
mesmo comprimento, sendo que este formato normalmente conhecido como array ou matriz.
Constitudo, portanto de linhas e colunas, onde cada elemento identificado por um ndice
composto pela interseo dos nmeros das linhas e colunas.
0 1 2
0
1
2
3
Note que o primeiro elemento de qualquer array sempre possu ndice 0.


DECLARAO DE ARRAYS
A declarao de um array semelhante a declarao de uma varivel comum, com exceo de
um ndice que identifica quantas linhas e colunas este array deve possuir.
Em um array unidimensional, como temos apenas uma nica lista correspondente a quantidade
de elementos que a varivel deve armazenar a sintaxe se d da seguinte maneira:
Dim nome_array (ndice) As tipo_da_varivel
Onde, ndice representa o nmero de elementos que faro parte do array, exemplo:
Dim ArrayNumerico(10) As Integer
Na declarao do array anterior, estamos declarando que o array ter 10 posies ou 10
elementos, do mesmo tipo Integer.
Com isso, ao invs de declararmos 10 variveis, temos apenas uma, tornando assim o cdigo
mais legvel e simples.
ArrayNumerico
0
1
2
3
4
5
6
7
8
9
Em que cada elemento do tipo Integer.
J em um array bidimensional, como a varivel composta por diversas listas correspondente a
quantidade de elementos que esta deve armazenar a sintaxe se d da seguinte maneira:
Dim nome_array (ndice) As tipo_da_varivel
Onde, ndice representa o nmero de linhas e colunas que faro parte do array, exemplo:
Dim TabelaTextual (5, 4 ) As String
Na declarao do array anterior, estamos declarando que o array ter 5 linhas e 4 colunas,
podendo assim armazenar 20 elementos, do mesmo tipo String.
Com isso, ao invs de declararmos 20 variveis, temos apenas uma, tornando assim o cdigo
mais legvel e simples.
TabelaTextual
0 1 2 3
0
1
2
3
4
Em que cada elemento do tipo String.
EXERCCIO 1
1. Abra o arquivo Exerccio 4.xls localizado na pasta da turma.
2. Abra o Editor do VBA.
3. Abra o mdulo chamado Mdulo1.
Com isso, ir aparecer uma macro chamada arrayuni.

Dentro desta macro, digite o seguinte cdigo:

4. Depois de digitado o cdigo aperte a tecla de atalho F5, para executar a macro.
Ser exibida uma caixa de mensagem:

5. Clique em OK.
Ser exibida uma caixa de mensagem:

6. Clique em OK.
Ser exibida uma caixa de mensagem:

7. Clique em OK.
Ser exibida uma caixa de mensagem:

Neste exerccio, utilizamos um array unidimensional de 4 elementos para armazenar nomes dos
alunos e mostra-los na tela atravs da funo msgbox.
EXERCCIO 1
1. Abra o arquivo Exerccio 4.xls localizado na pasta da turma.
2. Abra o Editor do VBA.
3. Abra o mdulo chamado Mdulo2.
Com isso, ir aparecer uma macro chamada arraybi.

Dentro desta macro, digite o seguinte cdigo:

4. Depois de digitado o cdigo aperte a tecla de atalho F5, para executar a macro.
Ser exibida uma caixa de mensagem:

5. Clique em OK.
Ser exibida uma caixa de mensagem:


Neste exerccio, utilizamos um array bidimensional com 2 linhas e 2 colunas totalizando assim 4
elementos para armazenar nomes e mdias dos alunos e mostra-los na tela atravs da funo
msgbox.
Alm disso, fizemos uso no cdigo de uma funo chamada Chr(nmero). Esta funo envia
como resultado para a funo msgbox o caractere correspondente ao nmero digitado entre
parnteses. Este nmero, o nmero do caractere no padro ASCll (American Standard Caracter
Interchange Information).
No cdigo ASCII, cada caractere possui um nmero associado, no caso do nmero 13, este se
encontra associado ao <ENTER>, o que equivale a uma troca de linha. Assim utilizamos o Chr(13)
para simular um <ENTER>, de tal maneira que os dados no apaream todos grudados na mesma
linha.
ESCOPO OU DOMNIO DAS VARIVEIS
O Escopo ou domnio de uma varivel define a rea de aplicao na qual a varivel pode ser
utilizada, ou seja, em qual rea ela pode ser acessada.
Existem 3 nveis de escopo para as variveis:
Escopo de Procedimento/Funo
Escopo de Mdulo
Escopo de Projeto
ESCOPO DE PROCEDIMENTO/FUNO
uma varivel que foi inicialmente declarada dentro de um procedimento ou funo, sendo que
esta varivel somente pode ser utilizada dentro deste procedimento ou funo. So variveis criadas
no momento da execuo do procedimento ou funo e destrudas automaticamente ao trmino da
execuo do procedimento ou funo. Assim sendo, qualquer tentativa de se acessar uma varivel
dentro de um procedimento que foi declarada no corpo de um outro procedimento, esta no ter xito.
Para melhor entendermos a utilizao das variveis com escopo de procedimento/funo,
proceda da seguinte maneira:
1. Abra uma nova pasta de trabalho.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:

4. Execute a sub-rotina proc1.
Com isso ir surgir uma caixa de mensagem com o valor da varivel var.

5. Clique o boto OK.
Em seguida, surgir uma nova caixa de mensagem em branco.

Neste exemplo, dentro do procedimento proc1, declaramos uma varivel do tipo Integer
chamada var, e atribumos a ela o valor 5. Logo em seguida mostramos o valor desta varivel na tela
usando a funo msgbox. Depois, ainda no procedimento proc1, chamamos o procedimento proc2
que tambm mostra o valor da varivel var1 na tela atravs da funo msgbox, mas perceba que na
segunda caixa de mensagem o valor da varivel no aparece, ou seja, a varivel no contm valor.
Isso acontece pelo fato da varivel esta declarada dentro do procedimento proc1.
ESCOPO DE MDULO
uma varivel que foi inicialmente declarada na seo de declaraes do mdulo, fora de
qualquer procedimento. Com isso a varivel pode ser utilizada dentro de todos os procedimentos e
funes existentes dentro do mdulo.
Para melhor entendermos a utilizao das variveis com escopo de mdulo, proceda da seguinte
maneira:
1. Abra uma nova pasta de trabalho.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:




4. Execute a sub-rotina proc1.
Com isso ir surgir uma caixa de mensagem com o valor da varivel var.

5. Clique o boto OK.
Em seguida, surgir uma nova caixa de mensagem novamente com o valor da varivel var.

Neste exemplo, dentro seo de declarao do mdulo, declaramos uma varivel do tipo Integer
chamada var. Dentro do procedimento proc1 atribumos a varivel o valor 5. Logo em seguida
mostramos o valor desta varivel na tela usando a funo msgbox. Depois, ainda no procedimento
proc1, chamamos o procedimento proc2 que tambm mostra o valor da varivel var1 na tela atravs
da funo msgbox. Perceba com isso que tanto no proc1 quanto no proc2, conseguimos ter acesso
ao valor da varivel var, justamente pelo fato de esta ser de escopo modular.
ESCOPO DE PROJETO
uma varivel que foi inicialmente declarada na seo de declaraes do mdulo, fora de
qualquer procedimento, muito parecido com a declarao das variveis de escopo modular com a
diferena que antes do nome da varivel deve-se utilizar a palavra chave Public. Com isso a varivel
pode ser utilizada dentro de qualquer mdulo da pasta de trabalho, ou seja, do projeto.
Para melhor entendermos a utilizao das variveis com escopo de projeto, proceda da seguinte
maneira:
1. Abra uma nova pasta de trabalho.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:


4. Em seguida, insira um novo mdulo, digitando o seguinte cdigo:

5. Retorne ao mdulo anterior e execute o procedimento proc1.
Com isso ir surgir uma caixa de mensagem com o valor da varivel var.

6. Clique o boto OK.
Em seguida, surgir uma nova caixa de mensagem com o novo valor da varivel var.

Pronto! Com isso aprendemos sobre a declarao, utilizao e escopo de variveis.


MDULO 4 SUB-ROTINAS E FUNES
Como visto em mdulos anteriores, quando se grava uma macro no Excel, este tem um
comportamento em background que realiza a respectiva codificao para Visual Basic for Applications,
onde cada macro criada d origem a um procedimento ou rotina.
Existem dois tipos de rotinas:
1. Sub-rotinas ou rotinas Sub.
2. Funes.
SUB-ROTINAS
Um grupo de comandos que podem ser executados, atravs da chamada do nome da sub-rotina,
cuja definio delimitada pelas palavras-chave Sub e End Sub.
As sub-rotinas podem possuir ou no argumentos, que so valores passados para a sub-rotina,
os quais sero utilizados internamente para a realizao de clculos, por exemplo, se voc vai criar um
sub-rotina para clculo do desconto do cliente com base no seu valor de compra, voc poderia definir
um argumento para esta sub-rotina que ir inform-la o salrio do cliente.
Para criao de uma sub-rotina, devemos seguir a seguinte sintaxe:
Sub <nome_da_sub-rotina> (<lista_de_argumentos>)
<bloco_de_comandos>
End Sub
Na <lista_de_argumentos>, cada argumento que compor esta sub-rotina, deve estar
associado a um tipo de dados, caso essa informao seja omitida, ser considerado o tipo
default para o argumento, no caso Variant.
As sub-rotinas so designadas pelo nome que lhe atribumos, onde este nome pode
ser qualquer, desde que no contenham espaos, nem comecem por caracteres numricos.
Como visto anteriormente, as sub-rotinas podem ou no conter argumentos. Caso sejam
necessrios, estes devem ser passados quando a sub-rotina for chamada e devem estar na mesma
ordem em que foram definidos.
Para ter a noo do que so parmetros lembre-se do funcionamento das funes do
Excel, que para executarem determinada funo necessitam de receber parmetros que
colocamos entre parnteses separados por vrgulas.
Quando criar sub-rotinas, procure utilizar nomes que descrevem a funo da sub-
rotina. Com isso tornamos o cdigo mais fcil de ser entendido.

Uma vez criada a sub-rotina, sempre que fomos cham-la dentro de um cdigo,
devemos digitar o nome da sub-rotina precedido da palavra Call.
Para melhor entendermos o funcionamento de uma sub-rotina, vamos ao um exemplo prtico:
1. Abra uma nova pasta de trabalho.
2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:

4. Execute o procedimento proc1.
Com isso, surgir na tela a seguinte caixa de mensagem:

No exemplo anterior, temos dois procedimentos, o primeiro chamado de proc1, onde temos duas
variveis declaradas. Em seguida, atribumos valores a estas variveis e as passamos como
argumentos para o procedimento concatena, que esta declarada logo abaixo. No procedimento
concatena, pegamos os valores das duas variveis e mostramos na tela usando a funo msgbox,
EXERCICIO
1. Em uma nova pasta de trabalho, abra o Editor do VBA e crie dois procedimentos:
Calcula_Desc: Este procedimento dever receber como parmetro, duas variveis do tipo
Currency chamadas respectivamente de Salario e Desconto. Dentro do procedimento devera ser
declarada uma varivel local do tipo Currency chamada Sal_Final, esta varivel devera receber o
valor do salrio com desconto. Em seguida o valor da varivel Sal_final deve ser mostrado na tela.
Proc1: Neste procedimento deve-se declarar duas variveis locais do tipo Currency chamadas
respectivamente de Salario e Desconto. Em seguida, atribua um valor qualquer a varivel Salario,
exemplo (2000), e outro valor a varivel Desconto, exemplo (0.1) e passe estas duas variveis como
parmetro para a funo Calcula_Desc.
2. Por fim execute a funo Proc1.
Com isso dever ser exibida na tela uma caixa de mensagem informando o salrio j
descontado.







FUNES
Um grupo de comandos que podem ser executados, atravs da chamada do nome da funo,
cuja definio delimitada pelas palavras-chave Function e End Function.
Toda funo identificada pelo nome, pelo nmero e tipo de parmetros recebidos, e tem como
objetivo executar um conjunto de instrues e produzir um valor final. Isto , toda vez que se executar
uma funo, esta sempre produzir um valor. Recorde-se como exemplo a funo SUM, esta recebe
por parmetro um conjunto de valores que se pretende somar e sabe-se que o resultado da aplicao
dessa funo ao conjunto de valores ser o respectivo somatrio.
As funes podem ou no conter argumentos. Caso sejam necessrios, estes devem ser
passados quando a funo for chamada e devem estar na mesma ordem em que foram definidos.
Para definir o valor produzido por uma funo basta no seu interior, atribuir ao nome da funo
um determinado valor ou expresso.
Quando criar funes, procure utilizar nomes que descrevem a funo da sub-rotina.
Com isso tornamos o cdigo mais fcil de ser entendido.

CUIDADO! No confundir Sub-rotina com funo. Apesar de suas sintaxes serem
parecidas, uma funo sempre retorna um ou mais valores para o comando que a chamou.
Para criao de uma funo, devemos seguir a seguinte sintaxe:
Sub <nome_da_funo> (<lista_de_argumentos>) As <Tipo>
<bloco_de_comandos>
End Function
Observe que alm da <lista_de_argumentos>, onde cada argumento que compor
esta funo deve estar associado a um tipo de dados, temos tambm um <tipo>. Este
<tipo> esta associado funo e serve para especificar o tipo de dados que a funo ir
retornar, caso esteja omitido, ser considerado o tipo default, no caso Variant.
Considere o exemplo a seguir:

No exemplo anterior, declaramos uma funo chamada converte_dolar, que espera receber dois
argumentos do tipo Currency (valor_real, cotao_dolar) e definimos tambm que a funo ir
retornar um valor do mesmo tipo Currency.
No momento em que formos chamar esta funo em algum cdigo, devemos utilizar o operador
de atribuio, isto , o valor que a funo ir retornar, deve ser atribudo a uma varivel, ou exibido na
tela atravs da funo msgbox.
No prximo exemplo, estamos atribuindo a varivel valor_dolar, o valor retornado pela funo
converte_dolar.

Ao invs de atribuir o valor de retorno da funo a uma varivel, poderamos exibi-lo na tela
usando a funo msgbox.

Para melhor entendermos o funcionamento de uma funo, vamos ao um exemplo prtico:
1. Abra o arquivo Exerccio 6.xls localizado na pasta da turma.

2. Abra o Editor do VBA.
3. Insira um novo mdulo e dentro dele, digite o cdigo a seguir:

4. Salve e feche o Editor do VBA.
Com isso, sua funo j esta pronta. Vamos agora test-la em uma clula dentro do
Excel.

EXECUTANDO A FUNO CRIADA, NO EXCEL
Para utilizar a funo criada no VBA, dentro de uma clula em uma das planilhas do Excel,
proceda da seguinte maneira:
1. Selecione a clula D4.
2. Clique o menu Inserir.
3. Clique a sub-opo Funo.
Com isso, surgir janela Inserir Funo.


4. Selecione a categoria Definida pelo usurio.
5. Selecione o nome da funo calcula_desconto.
6. Clique o boto OK.
Com isso, surgir a tela Argumentos da funo.

7. No campo Salrio, digite B4.
8. No campo Desconto, digite C4.
9. Clique o boto OK.
10. Copie a frmula no intervalo de clulas D4:D10.
A planilha dever ser exibida conforme a figura abaixo.

MDULO 5 FUNES INTERNAS DO VBA
Neste mdulo apresentaremos algumas funes internas do VBA, funes estas que sero de
extrema importncia para a soluo de algumas situaes que encontraremos mais adiante no curso,
pois diminuiro muito o tempo para solucionar tais problemas.
Para isto, dividiremos estas funes por categorias para melhor entendimento.
FUNES DE TIPO
Aqui veremos algumas funes para determinar o tipo de dados de uma varivel.
FUNO ISDATE
Esta funo recebe uma varivel como argumento e determina se esta contm uma data vlida.
Caso o argumento passado seja uma data vlida, a funo retornar Verdadeiro, caso contrrio,
retornar Falso.
A sintaxe desta funo a seguinte:
IsDate(<varivel>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

FUNO ISNUMERIC
Esta funo recebe uma varivel como argumento e determina se o valor atribudo a ela um
valor numrico. Caso o valor seja numrico, a funo retornar Verdadeiro, caso contrrio, retornar
Falso.
A sintaxe desta funo a seguinte:
IsNumeric(<varivel>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

FUNES PARA TRATAMENTO DE TEXTO
Aqui veremos algumas funes para tratamento de texto, via programao VBA.
FUNO LEN
Esta funo determina o tamanho da String que foi passada como parmetro para a funo.
A sintaxe desta funo a seguinte:
Len(<varivel>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir, mostrando o nmero de
caracteres existente na varivel.

Espaos em branco tambm contam para o tamanho da string.

FUNO LCASE
Esta funo converte para minsculas, a string que foi passada como parmetro para a funo.
A sintaxe desta funo a seguinte:
Lcase(<varivel>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.

FUNO UCASE
Esta funo converte para maisculas, a string que foi passada como parmetro para a funo.
A sintaxe desta funo a seguinte:
Ucase(<varivel>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.

FUNO MID
Esta funo retorna um nmero especificado de caracteres, a partir de uma posio especificada
dentro de uma string.Lembre-se que espaos em branco tambm devem ser considerados.
A sintaxe desta funo a seguinte:
Mid(<string>, <pos_inicial>, <num_caract>)
Abaixo, segue um exemplo que ilustra o uso desta funo:

Na execuo deste procedimento, uma caixa de mensagem surgir.
ERROR: stackunderflow
OFFENDING COMMAND: ~
STACK:

Vous aimerez peut-être aussi