Você está na página 1de 43

Suplemento Especial Nº02 MACROS PARA NOVATOS

MACROS PARA INICIANTES

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 1 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

1 - INTRODUÇÃO

Se você está lendo este tutorial é porque ou alguém está cobrando de você um melhor desem-
penho em suas tarefas, ou por sí só você resolveu desenvolver mais seus conhecimentos no Ex-
cel.

Nós que utilizamos o Excel em nosso dia-a-dia e já exploramos todo seu potencial quando fala -
mos de fórmulas, formatação etc, chega a hora que temos que conhecer o outro lado do Excel,
o VBA.

Saiba você que aprendendo VBA você não estará só dando uma guinada em sua carreira, mas
também irá gerar ganhos ou para você ou para a empresa que trabalha, pois a principal função
do VBA é automatizar tarefas, e quando falamos em automatização estamos falando em ganhos
financeiros.

2 - O QUE SÃO MACROS ?

Uma macro é um pequeno programa escrito utilizando o VBA que pode ser usado para realizar
uma tarefa específica. Podemos utilizar macros para diversos afazeres no Excel , dentre muitos
podemos citar:

-Configurar o Cabeçalho e Rodapé de uma planilha;


-Formatar uma linha de um texto;
-Imprimir várias planilhas intercaladas, evitando que se imprima uma a uma;
-Ordenar uma planilha em ordem crescente ou decrescente;

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 2 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

-Preencher um cadastro com informações de uma outra planilha;


-Etc..

Resumindo: Imagine que você precise todo dia abrir uma planilha, atualizar dados e imprimir es-
planilha, nada melhor que utilizar uma macro para tal, e é isso quem você irá aprender neste tuto-
rial.

As macros são criadas utilizando a linguagem VBA, Visual Basic Para Aplicativos, uma peque -
na ramificação do tão premiado Visual Basic, programa que já foi utilizado para criação de mi-
lhares de programas que você já utilizou, inclusive o Excel que você está utilizando neste momen-
to.

Você deve estar preocupado quando afirmei que Macros são pequenos programas escritos em
VBA, pois não conhece nada de VBA, mas fique tranqüilo, para criar Macros você não precisa
saber nada da linguagem VBA, mas é inevitável que com o passar dos dias de tanto criar Ma -
cros você se tornará um programador especialista em VBA, eu garanto.

Se afirmei que Macros são pequenos programas de VBA, então como criar se você não entende
nada de VBA ? A Microsoft sabendo disso e criou uma excelente ferramenta para nos auxiliar na
criação de Macros: O Gravador de Macros. Como se fosse uma filmadora que grava todas nos-
sas ações, o Gravador de Macros grava todas ações que praticarmos no Excel, mas tudo mesmo.

3 - O VBA - VISUAL BASIC PARA APLICATIVOS

Como já afirmei o VBA é uma ramificação do Visual Basic Para Aplicativos. O VBA não é um
privilégio exclusivo Excel, todos os outros aplicativos Microsoft, O Word , o PowerPoint e o Ac-
cess também tem o VBA.

O VBA , apesar e ser uma parte compactada do Visual Basic, pode ser utilizado para a criação
de grandes projetos, tendo um único ponto fraco a segurança do projeto.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 3 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

3.1 - CRIANDO UMA MACRO SIMPLES

Para que você entenda um pouco do VBA, vamos criar uma macro simples ....

Vamos supor que você trabalhe numa cafeteria e receba diariamente o faturamento do dia ante-
rios de uma filial e precise passar as informações para seu contador. Só que tem um problema:
você receberá estas informações diariamente através de um arquivo texto e não numa planilha.
Simplesmente enviar o arquivo texto para seu contador não seja uma boa idéia, então estas infor-
mações devem, ser tratadas diariamente.

-Abrir o arquivo texto através do Excel;


-Excluir algumas linhas irrelevantes;
-Formatar a fonte da planilha numa fonte mais atrativa;
-Formatar os números;
-Totalizar os resultados;

Tudo isso pode ser feito através de macro, mas como sei que você não conhece nada de macro
vamos utilizar o gravador de macros para gravar todas essas tarefas para você!

O arquivo texto recebido diariamente:

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 4 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Temos que saber exatamente o que faremos pois quando acionarmos o gravador de macros tudo,
mas tudo mesmo será gravado, e se gravarmos algo que não tem nada a ver com o desejado o
resultado será desagradável.

Antes de começarmos a gravar a macro localize o arquivo "faturamento.txt" em seu computador


para executarmos as tarefas.

Agora vamos começar a gravação da macro:

1-Insira uma nova pasta de trabalho, onde gravaremos as macros;

2-Clique no Menu Ferramentas..SubMenu Macro...Item Gravar Nova Macro.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 5 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Uma caixa de diálogo surgirá na tela de seu PC:

3-Por defeito cada vez que você vai gravar uma macro o nome da macro segue uma seqüência:
Mac, Mac, Mac etc... e não podemos gravar com esse nome , pois ficará muito difícil
localizá-la futuramente. Então vamos renomear a macro:

Certifique-se que você está gravando a macro em "Esta pasta de trabalho", senão sua macro se-
rá gravada em outro arquivo.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 6 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Iremos gravar o seguinte (Não se esqueça, tudo na nova pasta que você inseriu):

a-Abra o Arquivo Faturamento.txt (Aquele que pedi para você localizar em seu PC); Como se
trata de uma arquivo texto, mude o tipo de arquivo para facilitar a localização.

Logo que você clicar em "Abrir" uma caixa de diálogo surgirá:

Clique em Concluir.

Uma planilha será criada, agora vamos formatá-la.

b-Clique na região que seleciona toda a planilha para ajustarmos as colunas automaticamente.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 7 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

A velha regra para ajustarmos as colunas é dar dois cliques sobre uma delas.

c-Selecione a célula "C13" e totalize a coluna;

d-Faça o mesmo com a coluna "D13";

e-Negrite os totais;

f-Formate as colunas "C" e "D" com formato de moeda;

g-E finalmente clique no botão "Parar Gravação";

A sua planilha formatada deverá ter a seguinte aparência:

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 8 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Salve as alterações desta pasta como "faturamento_formatado.xls" e feche o arquivo.

3.1.1 - TESTANDO A MACRO

Agora você vai testar a macro que você gravou.

-Abra o arquivo faturamento_formatado.xls;


-Clique no Menu Macro..Sub Menu Macros (Você pode também utilizar o atalho "alt+F8";

-Clique em Executar. Num piscar de olhos você verá uma planilha ser criada e formatada a partir
de um arquivo Texto!

Com esta macro pronta você poderá todo dia que receber o arquivo texto do faturamento.txt e em
segundos já ter uma planilha pronta para enviar para seu contador.

Agora relaxe e faça uma revisão em tudo que você viu até agora. Faça novos testes, formate a cé-
lula com cores diferentes, formate as bordas, enfim invente qualquer coisa e você verá o resultado
e o que é melhor, você verá que fez um pequeno programa sem saber nada de programação, is-
so não é o máximo ?

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 9 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

3.2 - INTRODUÇÃO AO VISUAL BASIC PARA APLICATIVOS

Agora que você criou uma macro não tem curiosidade de ver como são ? Muitos gravam macros
e não se preocupam e nem tem curiosidade em ver como são, pois de um jeito ou de outro elas
sempre funcionam do jeito que queremos.

Abra o Editor de VBA em Ferramentas...Macros..Editor de VBA, ou se preferir utilizar atalhos cli-


quer "Alt+F11".

O editor de VBA é onde você passará a maior parte de seu tempo quando perceber o quanto é
bom saber criar linhas de comando. Então é melhor começar a se familiarizar com esse novo am-
biente.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 10 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Podemos afirmar que estamos n'outro lado das planilhas. Todas planilhas abertas são visualiza-
das também no Editor de VBA e o responsável nesta visualização é a Janela Explorer do Proje-
to.

Um projeto é formado por vários componentes. A pasta de Trabalho é um componente, as Plani -


lhas, os Módulos, os Formulários, todos são componentes que juntos reapresentam um projeto.

Não se preocupe agora em saber sobre todos os componentes de um projeto, pois em cada no-
va macro que você criar você irá se acostumando com estes componentes.

Agora você deve estar perguntando: - Onde está a macro que gravei para a formatação automá -
tica de relatórios ?
Sempre quando gravamos macros o Visual Basic insere um componente chamado "Módulo".
Para acessar este módulo, repare que há um diretório na relação de componentes com o nome
de Módulo.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 11 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Dê dois cliques sobre esse diretório que você verá os módulos armazenados do projeto.

O que você verá a seguir poderá deixá-lo meio confuso, pois as macros são todas gravadas em
inglês, mas não se preocupe é tudo questão de costume.

De dois cliques no componente Módulo1 e veja a macro que você gravou:

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 12 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

O que está vendo é a macro que você gravou. Cada macro que você gravar será armazenada nes-
te módulo. Repare neste componente, no canto superior à direita há uma combo com o nome de
todas macros que você gravou.

3.3 - EXAMINANDO E EDITANDO A MACRO GRAVADA

Para facilitar o entendimento numerei as linhas da macro e esta numeração não interfere no de -
sempenho da mesma.

10 Workbooks.OpenText Filename:="C:\Meus documentos\Boletins\faturamento.txt", _


Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
Array(Array(0, 1), Array(18, 1), Array(38, 1), Array(53, 1)), TrailingMinusNumbers:= _
True

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 13 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Nesta linha localizamos o arquivo faturamento.txt no PC e o abrimos. O Normal seria que pudes-
semos gravar cada comando numa linha, mas nem sempre isso é possível, pois devido ao gran-
de número de comandos a linha ficaria muito grande. Para evitar que isso ocorra podemos utili-
zar o caracter Underline ( _ ) para pularmos a linha sem que isso prejudique o funcionamento da
macro.

20 Cells.Select

Nesta linha do código selecionamos todas células da planilha;

30 Cells.EntireColumn.AutoFit

Agora ajustamos as colunas automaticamente, ou seja cada coluna será formatada no tamanho
da larguna de seu texto;

40 Range("C13").Select

Na linha 40 selecionamos a célula "C13";

50 ActiveCell.FormulaR1C1 = "=SUM(R[-6]C:R[-1]C)"

Na linha 50 totalizamos a coluna C;

60 Range("D13").Select

A seguir selecionamos a céllula "D13";

70 ActiveCell.FormulaR1C1 = "=SUM(R[-6]C:R[-1]C)"

Na linha 70 totalizamos a coluna D;

80 Range("C7:D13").Select

Na linha 80 selecionamos o intervalo "C7:D13";

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 14 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

90 Selection.NumberFormat = "#,##0.00"

Na linha 90 formatamos os números do intervalo "C7:D13" como Moeda;

100 Range("C13:D13").Select

Na linha 100 selecionamos o intervalo "C13:D13";

101 Selection.Font.Bold = True

E finalmente formatamos a fonte deste intervalo com Negrito;

Se você não entendeu muito cada linha desta macro não se preocupe, como disse com o passar
do tempo você se acostuma com essa linguagem.

4 - CRIANDO A SEGUNDA MACRO GRAVADA

Você deve ter pensado que paramos no primeiro exemplo não é mesmo ? Mas enganou-se, va-
mos continuar nossos exemplos.

Vamos criar um macro simples com os seguintes parâmetros(Não se esqueça de ligar o grava-
dor de macros):

- Insira uma nova pasta de trabalho;


- Ative o gravador de macros e renomeie a macro como : ValoresNaCélula;
- Com o Mouse selecione a célula "F5" e digite a palavra "Alô";
- Desligue o Gravador de Macros;

Dê uma examinada agora no código de VBA desta macro. Abra o editor básico visual(Alt+F11),
certifique-se que o explorer do projeto fique visível (Ctrl-R o mostrará), encontra seu projeto, abra
o diretório dos módulos e o duplo-clique Modulo1.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 15 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

A primeira coisa a fazer é conhecer a estrutura de uma macro. As primeiras 4 linhas são os co-
mentários, que não tem efeito nenhum na macro além de servir como fonte de informação. Os
comentários são diferenciados dos códigos com um apóstofo na frente da frase. Assim que in-
serimos esses apóstofos a frase muda para a cor verde.

'
' ValoresNaCélula Macro
' Macro gravada em 23/09/2006 por Fabio Mauricio dos Santos
'

A primeira linha real do código é esta:

Range("F5").Select

A função deste código é selecionar a célula "F5";

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 16 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

ActiveCell.FormulaR1C1 = "Alô"

ActiveCell representa exatamente a célula selecionada, enquanto que "FormulaR1C1" é utilizado


para inserir dados nesta célula;

A linha final do código da macro é similar à primeira:

Range("F6").Select

O que precisamos prestar atenção nesta macro é que sempre que queremos mudar o valor de
um objeto no VBA utilizamos o sinal "=".

4.1 - PROGRAMAÇÃO ORIENTADA POR OBJETOS

Vamos falar agora sobre Programação Orientada Por Objetos. Apesar de ser um termo que vo-
cê pouco ouviu falar, mas é de suma importância.

Imagine um carro, um Porche ou um menos exótico, um corsa por exemplo. Esse carro tem deter-
minados atributos, tais como o número dos assentos, cor, número das engrenagens, tamanho do
motor, se tem um turbo ou não e assim por diante. Esse carro anda para frente, dá marcha ré e
pára.

Agora vamos falar sobre seu computador. Como seu carro tem também atributos, tais como o ta-
manho de memória, tamanho do HD, velocidade do processador e cor. Pode também fazer coi -
sas tais como o carregar um programa, funcionar um programa, fechar um programa e desligar.

Um carro e um computador são objetos - você pode ver e senti-lo os e pode experimentar estes
objetos "que fazem coisas". A premissa da Programação Orientada Por Objeto é que o ambiente
de programação consiste em objetos, esses objetos não tem presença física, mas são tratados
como objetos. No Excel há centenas de objetos dentre eles podemos destacar: A Pasta de Traba-
lho, As Planilhas e As Células.

Os Objetos tem atributos e nos objetos orientados esses atributos são chamados de Proprieda -
des.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 17 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Os Objetos pode fazer "coisas" e nos objetos orientados essas "coisas" são chamadas de Méto-
dos.

Os objetos podem reagir a algo e nos objetos orientados esses "algos" são chamados de eventos.

Agora quando alguém comentar com você sobre propriedades, eventos e métodos você saberá
explicar do que se trata!

Quando falo em mudar um atributo de um objetos estou falando em ajustar o valor de uma proprie-
dade de um objeto, como ? - O Nome do objeto seguido por um ponto, mais o sinal de igual ("=")
mais o valor que você quer atribuir.

Objeto.Propriedade = NovoValor

Atenção: Quando você for alterar a propriedade de um objeto com um texto, obrigatóriamente tem
que utilizar os aspas (").

ActiveCell.Value = "Atenção:Nesta célula contém um texto"

O mesmo não ocorre quando formos atrubuir um valor à propriedade de um objeto:

ActiveCell.Value = 2

4.2 - ESCREVENDO SEU PRIMEIRO PROGRAMA UTILIZANDO OBJETOS.

Agora você vai escrever um programa sem o auxílio do gravador. Faremos a seguinte tarefa:

Inserir o valor 10 na célula "A1";


Inserir o valor 20 na célula "A2";
Inserir o valor 30 na célula "A3";
Inserir a Soma =soma(A1:A3) na célula "A4".

Começe inserindo uma nova pasta de trabalha; agora vamos acessar o editor de vba, para agi-

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 18 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

lizar tecle "Alt+F11"; No editor de VBA no menu Inserir escolha Módulo. Se você tivesse gravado
uma macro o módulo seria inserido automaticamente.

No explorer do objeto , localize o Módulo1 e dê dois cliques sobre ele para abrir a tela de digita-
ção.

Agora vamos escrever nossa macro, para relembrar uma macro é iniciada pela palavra "Sub"
seguida pelo nome da macro.Feito isso vamos digitar a primeira linha da macro.

A Microsoft sempre preocupada em simplificar nossas atividades criou um disposito que nos au-
xiliará na digitação de uma macro. repare na figura acima que sempre que digitamos o nome de

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 19 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

um objeto uma lista com todas propriedades deste objeto surge na tela. Isso é muito bom , pois
se você ainda não domina muito o inglês e ainda não decorou as propriedades do objeto, poderá
recorrer a esta lista clicando sobre a propriedade desejada.

Repare que nesta lista existe diferentes ícones (desenhos) e dentre eles podemos destacar os
dois abaixo:

O primeiro desenho representa as propriedades do objeto, enquanto que o segundo


representa os métodos.

Futuramente quando você já haver decorado as propriedades e métodos, bastará digitar a pri-
meira letra e o sistema buscará as propriedades e métodos do objeto.

Neste momento seu código deve estar assim:

Sub NúmerosEmCélula()
Range("A").Value = 10
End Sub

Nós já vimos como ativar uma macro nas planilhas, teclando "alt+F8" ou no menu Ferramentas...
Macros...e executando a macro desejada. Agora vamos executar a macro diretamente no editor
de VBA, sem precisar sair do Editor. Repare que no Editor de VBA também tem Barras de Me -
nus e Ferramentas..

Alguns desse menus são conhecidos por você no menu do Excel, como Arquivo, Editar, Forma-
tar, mas tem alguns que você não conhece como o Executar.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 20 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Ponha o cursor sobre a Macro NumeroEmCélulas( ) e clique no Menu Executar, SubMenu Execu-
tar Sub/UserForm.

Retorne ao Excel e veja o resultado na célula "A1".

Tenho certeza que agora você se convenceu do poder do Excel. Pode ser uma coisa simples que
você fez, mas é muito importante para seu desenvolvimento.

Agora vamos continuar com nossa meta e digitar os outros comandos que propormos.

Sub NúmerosEmCélula()
Range("A1").Value = 10
Range("A2").Value = 20
Range("A3").Value = 30
End Sub

Vamos testar mais uma vez nossa macro. Certifique-se que o cursor está no procedimento:
NúmerosEmCélulas( ).

Além de utilizar o menu para a execução de uma macro , podemos usar a tecla "F5" ou o botão
da barra de ferramentas:

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 21 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Por enquanto você só utilizou valores de propriedades. O próximo passo é inserir a fórmula para
somar as células "A1:A3" na célula "A4". Moderemos da propriedade Value para Formula.

Sub NúmerosEmCélula()
Range("A1").Value = 10
Range("A2").Value = 20
Range("A3").Value = 30
Range("A4").Formula = "=SUM(A1:A3)"
End Sub

Você agora vai perguntar: - Como vou saber que na fórmula "=Soma(A1:A3)" o termo Soma é
igual a Sum ? Se você não souber a tradução, você pode gravar uma macro executando a fór-
mula que a tradução será gravada.

4.3 - O OBJETO EXCEL.

Como mencionado acima, excel tem um grupo inteiro dos


objetos que podem ser manipulados para fazer o que quer e
o que você necessita. A coleção de todos os objetos e como
e como se relacionam é muito grande. O diagrama real do
modelo do objeto excel é razoavelmente complexa e
provavelmente não fará o sentido passar para você neste
estágio, mas ao lado simplificamos para você ter uma idéia
de como funcionam.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 22 / 43


objetos que podem ser manipulados para fazer o que quer e
o que você necessita. A coleção de todos os objetos e como
Suplemento Especial Nº02
e como se relacionam é muito grande. O MACROS
diagrama real do
PARA NOVATOS
modelo do objeto excel é razoavelmente complexa e
provavelmente não fará o sentido passar para você neste
estágio, mas ao lado simplificamos para você ter uma idéia
de como funcionam.

O diagrama acima mostra a hierarquia dos objetos do Excel.

No aplicativo Excel contém pastas de trabalho;


Nas pastas de trabalho contém Planilhas;
Nas planilhas contém células.

Cada um destes objetos tem suas próprios propriedades, métodos e eventos. Alguns objetos
podem ter as propriedades que são também objetos. Grave isso: alguns objetos tem proprie-
dades que também são objetos. Por Exemplo: O objeto Célula tem uma propriedade chamada
Font e a propriedade Font também é num objeto, pois possui propriedades.

A seguir um exemplo de como mudar o tamanho de uma fonte de uma célula:

Range("A1").Font.Size = 8

Uma linha pode ter tantos objetos que se fizer necessário.

Application.ActiveWorkbook.ActiveSheet.Range("A1").Font.Size = 8

O exemplo acima é fantástico, o objeto Application tem a propriedade ActiveWorkbook que tam-
bém é um objeto e tem a propriedade ActiveSheet que é um objeto e tem a propriedade Range
que é um objeto e tem a propriedade Font que também é um objeto e tem a propriedade Font.

5 - PASTAS, PLANILHAS, CAIXAS DE MENSAGENS E SEUS EVENTOS.

No tópico anterior você viu importantes aspectos sobre programação orientada por objetos. Ago-

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 23 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

ra você vai ver:

a-Referências específicas de Pastas de Trabalho e Planilhas;


b-Como adicionar novas Pastas de Trabalho e Planilhas;
c-Exemplos práticos sobre como adicionar novas Pastas de Trabalho e Planilhas;
d-A Função MsgBox
e-Introdução aos Eventos

5.1 - Referências Específicas de Pastas de Trabalho e Planilhas

Nós já vimos este código:


Range("A1").Value = 10

Quando utilizamos este código estamos presumindo estamos nos referenciando a planilha que
está ativa. Isso acontece nas macros gravadas, mas e se você não quiser referencias a planilha
ativa e sim outra planilha ? Vamos supor que você tenha duas planilhas numa pasta de trabalho,
onde uma chama Dados e outra Resultado e que você queira preencher os dados de uma plani-
lha com resultados de outras, como fazer ?

Vamos supor que você queira inserir os valor 10 e 20 das células A1 e A2 da planilhas dados e
queira que a soma destas células seja mostrada na planilha Resultado. Você pode gravar uma
macro para tal. Insira uma nova pasta com duas planilhas, uma nomeada como Dados e outra
nomeada como Resultado.

Sub Resultado()
'
' Resultado Macro
' Macro gravada em 24/09/2006 por Fabio Mauricio dos Santos
'

'
Range("A1").Select
ActiveCell.FormulaR1C1 = "10"
Range("A2").Select

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 24 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

ActiveCell.FormulaR1C1 = "20"
Range("A3").Select
Sheets("Resultado").Select
ActiveCell.FormulaR1C1 = "=SUM(Dados!RC:R[1]C)"
Range("A2").Select
End Sub

Depois da macro gravada você deve ter ficado satisfeito, mas cuidado pois se você tiver na pla-
nilha Resultado e executar a macro os valores "10" e "20" serão preechidos na planilha Resultado
e não na planilha Dados como o esperado. Já a fórmula "=Soma(Dados!A1:A2) será preenchido
na planilha correta por que selecionamos primeira a planilha para tal execução:

Sheets("Resultado").Select
ActiveCell.FormulaR1C1 = "=SUM(Dados!RC:R[1]C)"

Este é um dos defeitos do gravador de macros do Excel. Mas não desanime , pois para quem
nunca foi programador e não conhece muito inglês o gravador ainda é um excelente professor.

Como temos esse problema com o gravador de macros, então temos que editar a macro para
que ela funcione perfeitamente.

Sheets("Dados").Range("A1").FormulaR1C1 = "10"

Repare que o gravador numa linha de comando seleciona a célula e noutra ele preenche com o
valor. Na edição podemos racionalizar o código e também resolver este problema do gravador.
Para melhorar ainda mais este código podemos também substituir a propriedade "FormulaR1C1"
por Value.

Vamos então editar toda macro para que não nos preocupemos mais em qual planilha nós esti-
vermos que o resultado será o esperado:

Sub Resultado()
'

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 25 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

' Resultado Macro


' Macro gravada em 24/09/2006 por Fabio Mauricio dos Santos
'

'
Sheets("Dados").Range("A1").FormulaR1C1 = "10"
Sheets("Dados").Range("A1").FormulaR1C1 = "20"
Sheets("Resultado").Select
ActiveCell.FormulaR1C1 = "=SUM(Dados!RC:R[1]C)"
Range("A2").Select
End Sub

Você deve ter notado que na terceira linha do código não editei a macro. Fiz isso de propósito
para que você tomasse a iniciativa:

Sub Resultado()
'
' Resultado Macro
' Macro gravada em 24/09/2006 por Fabio Mauricio dos Santos
'

'
Sheets("Dados").Range("A1").FormulaR1C1 = "10"
Sheets("Dados").Range("A2").FormulaR1C1 = "20"
Sheets("Resultado").Range("A1").Value = "=SUM(Dados!RC:R[1]C)"
End Sub

Com certeza esta macro ficou muito melhor, não acha ? Com certeza ela funcionará quatro vezes
mais rápido que a original.

Esta macro está aprovada, não é mesmo. Agora você aprendeu a escrever dados de uma plani -
lha em outra planilha, isto não é fantástico ? Mas e se você quisesse escrever o resultado de uma
planilha numa planilha de outra pasta de trabalho, será que também é possível ?

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 26 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Se você não especificar qual pasta de trabalho deseja expor o resultado com certeza a escolhida
pelo sistema será a pasta ativa. Se quiser discriminar a pasta de trabalho use a sintaxe abaixo:

Workbooks("NomeDaPasta.xls").Sheets("NomePlan").Range("A1").Property = Value

5.2 - Adicionando Pastas de Trabalho e Planilhas

Haverá ocasiões que você criará uma macro onde necessitará criar uma nova pasta de trabalho
e também mais planilhas.

A sintaxe para criar uma nova pasta de trabalho é a seguinte:

Application.Workbooks.Add

No exemplo acima estamos utilizando am hierarquia dos objetos do excel. Isto não impede que
utilizemos:

Workbooks.Add

O que nós fizemos com a macro é o equivalente a utilizar os botões das barras de ferramentas.
A pasta inserida via macro tornou-se a pasta ativa do excel e para salvar esta nova pasta você
pode utilizar "Salvar Como".

Via macro a sintaxe para salvar a pasta de trabalho é a seguinte:

ActiveWorkbook.SaveAs "C:\Seu diretório\Nome Pasta de Trabalho.xls"

Quando a pasta já existir e você quiser apenas salvar as alterações utilize:

ActiveWorkbook.Save

Já que aprendemos a salvar uma pasta de trabalho, agora podemos aprender a inserir uma no-
va planilha:

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 27 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Workbooks("NomeDaPasta.xls").Sheets.Add

Se você não especificar o nome da pasta de trabalho a nova planilha será inserida na planilha
ativa.

Quando inserimos uma nova planilha o nome assumido é o nome do objeto seguido pelo número
seqüencial: Plan4, Plan5 Etc... Mas esse com certeza não é o nome que desejamos para nossas
planilhas inseridas, então podemos utilizar a seguinte sintaxe:

Sheets.Add
ActiveSheet.Name="NovaPasta"

5.3 - Adicionando Pastas de Trabalho e Planilhas - Exemplo Detalhado

Espero que om explicado acima não tenha o deixado confuso. Vamos então fazer mais um exer-
cício criando uma nova macro. Os parâmetros são o seguinte:

-Crie uma nova pasta de trabalho e salve como SeuDiretório/NovaPasta.xls;


-Na pasta de trabalho insira uma nova planilha com o nome de "Dados";
-Crie uma nova pasta de trabalho e salve como SeuDiretório/resultados,xls";
-Na pasta de trabalho "Resultado.xls" crie numa nova planilha com o nome "Resultado";
-Na planilha Dados digite os valores 10, 20 e 30 nas células A1. A2 e A3 respectivamente;
-Na planilha Resultado insira "Total da Coluna A", "Total da Coluna B" e "Total da Coluna C"
nas células A1, B1 e C1.
-Agora vamos complicar um pouquinho: Nas células A2, B2 e C2 vamos inserir o totalizador
dos resultados das colunas da planilha "Dados". Ex: "=SUM([Dados.xls]Dados!$A$1:$A$3)".

Tudo isso você poderá escrever no módulo, pois todas essas sintaxes já foram por nós vistas
anteriormente.

-Crie uma nova pasta de trabalho.


-Abra o editor de vba (alt+F11)
-Crie uma nova macro e nomeia como NovaMacro;
-Agora execute as sete etapas acima;

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 28 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

-salve sua pasta de trabalho;

A solução de nosso exercício:

Sub Exercício()

'

' Macro2 Macro

' Macro Escrita em 19/09/2006 por Fabio Mauricio dos Santos

'

'

Workbooks.Add

ActiveWorkbook.SaveAs "C:\Meus documentos\Dados.xls"

ActiveWorkbook.Worksheets.Add
ActiveSheet.Name = "Dados"

Workbooks.Add

ActiveWorkbook.SaveAs "C:\Meus documentos\Resultados.xls"

ActiveWorkbook.Worksheets.Add

ActiveSheet.Name = "Resultados"

Workbooks("Dados.xls").Sheets("Dados").Range("A1").Value = 10

Workbooks("Dados.xls").Sheets("Dados").Range("A2").Value = 20

Workbooks("Dados.xls").Sheets("Dados").Range("A3").Value = 30

Workbooks("Dados.xls").Sheets("Dados").Range("B1").Value = 100

Workbooks("Dados.xls").Sheets("Dados").Range("B2").Value = 200

Workbooks("Dados.xls").Sheets("Dados").Range("B3").Value = 300

Workbooks("Dados.xls").Sheets("Dados").Range("C1").Value = 1000

Workbooks("Dados.xls").Sheets("Dados").Range("C2").Value = 2000

Workbooks("Dados.xls").Sheets("Dados").Range("C3").Value = 3000

Workbooks("Resultados.xls").Sheets("Resultados").Range("A1").Value = "Total da Coluna A"

Workbooks("Resultados.xls").Sheets("Resultados").Range("B1").Value = "Total da Coluna B"

Workbooks("Resultados.xls").Sheets("Resultados").Range("C1").Value = "Total da Coluna C"

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 29 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Workbooks("Resultados.xls").Sheets("Resultados").Range("A2").Value = "=SUM([Dados.xls]Dados!$A$1:$A$3)"

Workbooks("Resultados.xls").Sheets("Resultados").Range("B2").Value = "=SUM([Dados.xls]Dados!$B$1:$B$3)"

Workbooks("Resultados.xls").Sheets("Resultados").Range("C2").Value = "=SUM([Dados.xls]Dados!$C$1:$C$3)"

End Sub

Se você não chegou no resultado acima sugiro que estude novamente o tópico e recomece, vo-
cê verá que vale a pena.

5.4 - A Função MsgBox

No decorrer do funcionamento de uma macro você com certeza irá querer fornecer informações
ao usuário, e a melhor ferramenta para isso são as MsgBox ou as Caixas de mensagens.

A seguir dois exemplos de MsgBox:

A função MsgBox fornecida pelo VBA é fantástica, pois ela é muito simples e muito eficaz!

A sintaxe básica da função é:

MsgBox "Não esqueça de salvar o arquivo", vbOKOnly, "Caixa de Mensagem"

Quando você começar a digitar a linha para a criação da mensagem, logo na primeira vírgula
surge uma lista, e essa lista é responsável em fornecer os ícones e botões que poderão ser
utilizados na construção dessas mensagens.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 30 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

O primeiro da lista, "vbAbortRetryIgnore", insere três botões na caixa de mensagem (msgbox),


um para abortar, outro para nova tentativa e o terceiro para ignorar. O terceiro da lista inserirá
um ícone com uma cruz vermelho, representando "Atenção". Para saber cada função e dese -
nho teste um a um. Você pode também combinar botões e ícones conforme exemplo:

MsgBox "Para Combinar Botões e Ícones use o sinal +", vbAbortRetryIgnore + vbCritical + vbDefaultButton3, "Msgbox Demo"

Neste exemplo eu inseri três argumentos na msgbox:

-exibir três botões Abortar, Nova Tentativa e Ignorar;


-Exibir o ícone vermelho com uma cruz branca;
-Desviei o foco para o botão ignorar;

Saiba você que os ícones são opcionais, não é necessário a inserção.

5.5 - Introdução Aos Eventos

Os eventos são muito importantes. Eles controlam tudo o que ocorre no ambiente do Excel.
A abertura de uma pasta de trabalho, o salvamento, a impressão etc... O evento mais impor-
tante é o Workbook_Open, pois ele é o que controla tudo que ocorrerá na abertura da pasta.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 31 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Crie uma nova pasta de trabalho. Abra o editor de vba(alt+f11). certifique-se que o Explorer
do projeto esteja visível (Ctrl+R).

Já informei que o Explorer do Projeto armazena todos os objetos do Excel, Pastas, Planilhas e
Módulos. Assim como os módulos que servem para que escrevamos as macros os objetos:
EstaPasta_de_trabalho, Plan1, Plan2 e Plan3 também servem para que escrevamos as macros.
Então vamos agora criar uma macro no Módulo do Objeto EstaPasta_de_trabalho. Neste módu-
lo é onde encontramos os eventos que controlam tudo o que ocorre no Excel.

Dê dois cliques em EstaPasta_de_trabalho e ative o Módulo. Agora clique na Combo que está
topo do módulo à esquerda e escolha WorkBook.

O Excel abre automaticamente o primeiro evento WorkBook_Open( ).

Private Sub Workbook_Open()

End Sub

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 32 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Do jeito quem está este procedimento não fará nada, para que funcione é necessário digitar
algum código nele. Como já vimos algo sobre MsgBox vamos utilizar uma para que surja auto-
máticamente sempre que a planilha seja aberta.

MsgBox "Bem Vindo à Esta Pasta de Trabalho!", vbOKOnly, "Workbook_Open"

Ponha o cursor sobre o procedimento Workbook_Open , já com o procedimento digitado e


pressione F5 para ver a execução. Salvando o arquivo, fechando e abrindo novamente a cai-
xa de mensagem será exibida automaticamente.

Gostou desse sistema de controlar a pasta de trabalho ? Pense, você pode fazer o que quiser
sempre que a pasta for aberta. Por exemplo, vamos supor que você queira que a Plan1 sela a-
tivada sempre que a pasta seja aberta:

Private Sub Workbook_Open()

Sheets("Plan1").Activate

End Sub

Assim como o evento WorkBook_Open o Excel oferece inúmeros outros eventos. Para você ter
acesso clique na Combo no canto esquerdo no topo do Módulo.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 33 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Repare que a lista é grande de eventos que controlam o Excel. Por exemplo, assim como você
controla a abertura da Pasta de Trabalho, você pode também controlar o fechamento da pasta.
Para isso basta escolher o evento Before_Close().

Private Sub Workbook_BeforeClose(Cancel As Boolean)


MsgBox "Você está fechando a pasta de trabalho"
End Sub

Existe alguns eventos que disponibilizam argumentos para alteramos a funcionalidade do evento.
O evento Before_Close(), por exemplo: O argumento Cancel se declarado como True impede que
fechemos a pasta de trabalho.

Private Sub Workbook_BeforeClose(Cancel As Boolean)


MsgBox "Você está fechando a pasta de trabalho"
Cancel = True
End Sub

Para testar outros eventos basta selecioná-los na lista e utilizar as MsgBox.

6 - TRABALHANDO COM VARIÁVEIS

Aconselho a continuar os estudos se você já dominou bem os tópicos anteriores sobre macros.
Neste tópico nós veremos algo um pouco mais avançado que são as variáveis.

As variáveis são uma parte essencial de toda a linguagem de programação. Se você usa C++,
Fortran, Javascript, VBA ou qualquer outra língua, você necessita-las-á sempre. Assim, que são
essas variáveis ?

Uma variável é uma posição nomeada em sua memória de computador que pode ser usada arma-
zenar dados.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 34 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

A sintaxe para atribuir um valor a uma variável é:

NomeVariável = Valor

Os valores de variáveis com textos devem ser incluídos com o texto entre aspas:

NomedoFuncionário = "Daniel"

Os valores numéricos não precisam ser escritos com aspas:

MinhaVariável = 13

Uma vez nomeada uma variável ou dado algum a ela esse valor é armazenado até que mude
ou saia do procedimento.

Sub ExemploVariavel()
NomeFuncionário = "Daniel"
IdadeFuncionário = 29
MsgBox "O Nome é " & NomeFuncionário & ". A sua idade é " & IdadeFuncionário
End Sub

O principal elo para o bom emprego de uma variável é o caracter "&", pois com ele é possível
criar, por exemplo uma caixa de mensagem rotativa. Não sei se você se recorda, mas esse ca-
rater (&) é o mesmo que utilizamos na função Concatenar() nas fórmulas do Excel. Ex:
"=A1&A2&A3".

Fizemos como numa fórmula, concatenamos as duas variáveis à parte de uma frase produzindo
um resultado espetacular!

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 35 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

O importante é recordar que os dados literais do código devem ser inseridos entre aspas:

"O Nome é " e ". A sua idade é "

Você pode também usar variáveis no lugar dos números em expressões matemáticas.

Sub OutroExemplo()
Atribuindo Valores à Variáveis
x = 10
y = 100
Efetuado cálculos com as variáveis
z=x*y
O resultado é mostrado numa MsgBox
MsgBox "x * y = " & z
End Sub

Você pode usar os operadores matemáticos usuais (+, -, /, *) as muitas outras funções matemá
ticas executar muitas tarefas diferentes.

6.1 - Tipos de Dados

Em VBA podemos trabalhar com diversos tipos de dados: Números Inteiros, números decimais,

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 36 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

moeda, datas etc... Cada tipo de dado vai depender do que você vai criar no Excel. Por exemplo:
Para criar números para cálculos científicos que requer precisão é necessário usar tipo de dados
decimais.

Vejamos a seguir os tipos de dados disponíveis no VBA:

Você pode ver da tabela que quanto maior ou mais complexo o tipo de dados mais bytes da
memória será consumido.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 37 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

6.2 - Declarando Variáveis

Declarar variáveis significa dizer ao VBA quais nomes queremos usar em nosso código e qual
tipo de dados será armazenado neste nome.

No exemplo utilizado no tópico 6 no procedimento "Sub ExemploVariavel()" as variáveis não


foram declaradas, o que está incorreto, pois assim o sistema consumirá mais memória.

Você informará ao VBA que trabalhará com variáveis com esta variável for precedida pelo termo
"Dim".

Logo após o termo "Dim", informamos o nome da variável seguido dio tipo desta variável. O VBA
sabendo que os novatos no início de sua jornada como programador teriam dificuldades em saber
qual tipo de variável utilizar, criou o tipo variant, que substitui todos tipos de variáveis, e o que é
melhor nem precise declarar o tipo variante que o sistema reconhecerá automaticamente.

Ex.:
Dim NomeFuncionário as Variant ou somente Dim NomeFuncionário

Mas utilizar a variável Variant tem uma enorme desvantagem: o consumo de memória, então a-
conselho na medida do possível utilizar o tipo certo de variável.

Quando utilizamos o tipo de variável variant ou deixamos em branco o sistema se encarregará


de descobrir que variável utilizar, por isso o consumo de memória.

No exemplo do tópico 6 o correto é utilizar as seguintes variáveis:

Dim NomeFuncionário As String


Dim IdadeFuncionário As Integer

Veja a seguir o procedimento já com as variáveis declaradas:

Sub ExemploVariavel()

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 38 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Dim NomeFuncionário As String


Dim IdadeFuncionário As Integer
NomeFuncionário = "Daniel"
IdadeFuncionário = 29
MsgBox "O Nome é " & NomeFuncionário & ". A sua idade é " & IdadeFuncionário
End Sub

Você deve estar preocupado, pois não sabe ainda como declarar variáveis, mas não se preo-
cupe, procure decorar os nomes das variáveis informado no tópico 6.1, pois o VBA o ajudará
a localizar a variável certa. Quando começar a digitar a variável digitando o termo Dim seguido
do nome da variável uma lista surgirá e bastará você escolher qual variável utilizar.

Uma dica importante para identificar uma variável repare na cor do ícone, as variáveis são os
ícones de cor azul:

Para economizar espaço no editor de VBA podemos declarar inúmeras variáveis numa mesma
linha, para isso separe-as com virgula:

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 39 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Dim NomeFuncionário As String, Dim IdadeFuncionário As Integer

Há muitos programadores que não declaram variáveis, mas se você quiser ser um excelente
profissional aconselho a declarar todas variáveis em seus projetos. Você sabia que há uma
maneira do sistema cobran isso de nós ? Sim , basta ativar na barra de menus Ferramentas
submenu Opções o ítem "Requerer Declaração de Variáveis".

Deixando essa caixa marcada, sempre que inserir um módulo ou ativar um módulo de planilha
o termo "Option Explicit" surgirá no início do módulo. O que quer dizer esse termo:

Este termo significa que a partir de agora todas variáveis deverão ser declaradas senão um erro
ocorrerá.

Para testar crie um procedimento sem a declaração de variável e execute-o:

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 40 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Sub VariavelNãoDeclarada()
CorFavorita = "Azul"
MsgBox "Cor Favorita=" & CorFavorita
End Sub

Assim que executar uma mensagem de erro o avisará !

Outro problema que você enfrentará: Não basta apenas declarar a variável, você deverá declara-
la corretamente senão outro erro ocorrerá, por exemplo declarar uma variável tipo String como
Double, veja o exemplo:

Sub VariavelNãoDeclarada()
Dim CorFavorita As Double
CorFavorita = "Azul"
MsgBox "Cor Favorita=" & CorFavorita
End Sub

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 41 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Eu não quis que você já se torne um especialista em declarar variáveis, mas foi importante você
ter essa noção, pois com certeza você deve ter visto várias declarações de variáveis em meus
aplicativos e até mesmo no fórum, e agora isso não será mais um fantasma para você.

6.3 - A Função InputBox

Muitas vezes você criará um projeto e de cadastro por exemplo e vai querer a participação do usu-
ário. Imagine uma planilha longa que requer o preenchimento de vários campos é ficará muito tra-
balhoso para o usuário localizar as várias células para o preenchimento. Saiba que isso poderá ser
amenizado com a utilização de uma função: A função inputBox.

O texto digitado nesta caixa exibida na função InputBox retornará onde você desejar, numa célula
de uma ficha de cadastro por exemplo.

Sub MinhaInputBox()
Dim seutext
seutext = InputBox("Digite seu Nome", "Nome")
Range("A1") = seutext
End Sub

Para exercitar, crie uma nova pasta de trabalho, formate os campos de formulário para preenchi-
mento de cadastro e chame as inputbox para preencher as células deste cadastro. A função Input-
box pode ser chamada quantas vezes se fizer necessário dentro de num procedimento.

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 42 / 43


Suplemento Especial Nº02 MACROS PARA NOVATOS

Sub PreencherCadastro()
Dim Nomeusuário As String
Dim Idadeusuário As Integer
Nomeusuário = InputBox("Entre com seu nome", "Nome do Usuário")
Idadeusuário = InputBox("Entre com sua idade", "Idade do Usuário")
Range("A1") = Nomeusuário
Range("A2") = Idadeusuário
End Sub

7 - CONCLUSÃO

Nossa preocupação com quem está começando em programação e usa o excel como plataforma
é muito grande, por isso publicamos mais um tutorial a nível de usuários iniciantes.

A melhor maneira de aprendermos programação é praticando.

Começamos o tutorial pelo nosso amigo inseparável : O gravador de macros;


Iniciamos em edição de macros gravados;
Vimos o que significa Programação Orientada em Objetos;
Aprendemos a utilizar as funções MsgBox e InputBox;
Iniciamos em declaração de variáveis e tipos e variáveis;

MACROS PARA INICIANTES!

Excellencia Soluções em VBA www.tudosobrexcel.com Página: 43 / 43

Você também pode gostar