Você está na página 1de 97

capa_contra.

p65 1 16/6/2004, 17:39


indice.p65 1 17/6/2004, 10:44
© 2004 b y Dig
by er
Diger ati Books
erati
Todos os direitos reservados e protegidos pela Lei 5.988 de 14/12/1973.
Nenhuma parte deste livro, sem autorização prévia por escrito da
editora, poderá ser reproduzida ou transmitida sejam quais forem
os meios empregados: eletrônicos, mecânicos, fotográficos, grava-
ção ou quaisquer outros.

Diretor Editor
Diretor ial
Editorial
Luis Matos

Editor a-assistente
Editora-assistente
Monalisa Neves

Redator
Redatoraa
Sandra Rita Pinto

Prepar
Prepar ação e Re
eparação visão
Revisão
Beatriz Utsumi

Capa e Pr ojeto Gráf


Projeto ico
Gráfico
Daniele Oliveira

Ar te
Arte
Patricia Fernandez Ferrari

Supor te Técnico e Atendimento ao Leitor


Suporte
suporte@digerati.com.br
(11) 3217-2626

Treinamento Avançado em Excel


Diger
Diger ati Com
erati unicação e Tecnolog
Comunicação ia Ltda.
ecnologia
Rua Haddock Lobo, 347 – 12º Andar
CEP 01414-001 São Paulo/SP
(11) 3217-2600 Fax (11)3217-2617
www.digerati.com

Diretor
Diretor es
etores
Alessandro Gerardi – (gerardi@digerati.com.br)
Luis Afonso G. Neira – (afonso@digerati.com.br)
Alessio Fon Melozo – (alessio@digerati.com.br)

ISBN: 85-89535-38-X

indice.p65 2 17/6/2004, 10:44


Prefácio

“Você faz uma vez e o Excel faz o resto por você”. Era com esse
bordão que eu iniciava minhas explicações sobre o Microsoft Excel
durante as aulas que ministrava.
Passados alguns anos, continuo certo de que não existe no mer-
cado nenhuma ferramenta de produtividade – incluindo as “made
in Microsoft” – tão completa quanto o Excel. Com ele, você precisa
apenas gastar algumas horas projetando os cálculos e estruturando
as informações, para que depois o software faça tudo automatica-
mente, mediante um simples comando. Até parece mágica...
O Treinamento Avançado em Excel integra uma lista de títulos
lançados pela Digerati Books que inclui os livros 101 Dicas de Excel
Vol. I e II, Desvendando o Microsoft Excel e Universidade Excel.
Este livro, no entanto, tem uma proposta diferenciada: além de abor-
dar os novos recursos do Excel 2003 e a criação de funções, abor-
da, em profundidade, a criação de macros no Excel.
As macros permitem gravar seqüências de procedimentos, de
modo que você possa executar uma série de ações repetidas vezes,
no momento em que desejar. Por isso, elas são responsáveis pela
automatização da maior parte das atividades de quem lida com da-
dos e cálculos. Por meio da linguagem VBA (Visual Basic for
Applications), as macros permitem que sejam desenvolvidas novas
funcionalidades dentro do Excel, fazendo com que o programa se
torne muito mais do que uma simples ferramenta de produtividade,
ganhando, inclusive, o status de ferramenta de desenvolvimento.
É a esse recurso altamente sofisticado que você será apresentado
nas próximas páginas. Aproveite para familiarizar-se com ele, para,
em pouco tempo, poder colocar o Excel no“piloto automático”, guar-
dando seu tempo livre para coisas mais interessantes...

Luis Matos
luismatos@digerati.com.br
Diretor Editorial

indice.p65 3 17/6/2004, 10:44


Índice
CAPÍTULO 01

Algumas novidades na versão XP .......................... 09


Localizando planilhas ................................... 09
Exibindo detalhes ......................................... 10
Cabeçalhos e rodapés................................... 11
Diagramas ..................................................... 12
Inserindo novas caixas ........................... 13
Formatando as caixas do seu diagrama .. 13
Alterando o layout .................................. 14
Alinhamento de células ................................ 14
Botão AutoSoma ........................................... 15
Desenhando bordas ...................................... 15
A área de transferência ................................. 16

CAPÍTULO 02

Funções ............................................................... 17
Disponibilizando funções....................... 17
Funções de texto .......................................... 18
Função PROCURAR ................................ 18
Função LOCALIZAR ............................... 19
Funções ESQUERDA e LOCALIZAR ........ 19
Funções matemáticas ................................... 19
Função SUBTOTAL ................................. 19
Funções estatísticas ...................................... 21
Função FREQÜÊNCIA ............................ 21
Funções de data e hora ................................ 23
Função DATADIF .................................... 23
Funções de informações .............................. 24

indice.p65 4 17/6/2004, 10:44


Juntando mais de uma categoria de funções ...... 24
Função PROCV ....................................... 24

CAPÍTULO 03

Gerando gráficos automáticos ............................... 28


Procurando dados específicos ............... 29
Criando o gráfico.......................................... 30

CAPÍTULO 04

Noções de macro .................................................. 33


Macro para classificar dados em uma planilha .. 33
Formas de executar uma macro ................... 35
Teclas de atalho ...................................... 35
Comandos .............................................. 35
Criando botões na planilha .................... 36
Macro para encontrar subtotais.................... 36
Macros de endereços absolutos / relativos ... 37
Macros com endereços absolutos .......... 38
Editando a macro ................................... 38
Macros com endereços relativos ............ 39
Entendendo o código ............................. 40

CAPÍTULO 05

O editor do Visual Basic no Excel .......................... 41


A janela do editor do Visual Basic ................. 41
Módulos ................................................. 43
Objetos ................................................... 43
Eventos da planilha ................................ 44

indice.p65 5 17/6/2004, 10:44


CAPÍTULO 06

Exibindo mensagens ao usuário ............................ 47


Função MSGBOX .......................................... 47
Outros exemplos de mensagem ................... 48
Capturando respostas do usuário ................. 49
Função INPUTBOX ................................ 50
Adicionando comentários ao código ............ 51

CAPÍTULO 07

Criando um formulário no VBA ............................. 52


Criando um formulário ................................. 52
A barra de ferramentas do formulário .......... 53
Inserindo um controle ................................. 55
Criando um formulário simples ............. 55
Alterando o nome dos controles .................. 56
A propriedade Caption........................... 56
Alterando os controles do formulário .......... 56
Inserindo uma imagem .......................... 57
Alterando a ordem dos controles ........... 58
Preparando o ambiente dos dados ......... 58
Preparando a tabela de veículos ........ 59
Associando Veículos com o controle ... 59
Exibindo o formulário ............................ 60
Exibindo o preço do veículo ........................ 61
Descarregando o formulário da memória 61

indice.p65 6 17/6/2004, 10:44


CAPÍTULO 08

Manipulando células ............................................. 62


Métodos de manipulação de células............. 62
Verificando a área selecionada ............... 62
Inserindo fórmulas em uma célula ......... 63
O método Select e a propriedade Selection .. 63
Exemplos de utilização do método Range ... 63
Propriedade Offset ................................. 67
Atribuindo valores às células da planilha ..... 67

CAPÍTULO 09

Variáveis de memória ............................................ 69


Conceito de variáveis de memória ............... 69
Regras para nomeação em VBA .................... 69
Como definir variáveis ................................. 70
Declarando variáveis .................................... 71
Escopo das variáveis ..................................... 72
Variáveis do nível do procedimento ....... 73
Variável do nível de módulo ................... 73
Variáveis de nível global ......................... 73
Tipos de variável .......................................... 73

CAPÍTULO 10

Estruturas de programação.................................... 75

indice.p65 7 17/6/2004, 10:44


Estruturas condicionais ................................ 75
As estruturas If ....................................... 75
A estrutura Case Select ........................... 78
Estruturas de looping ................................... 79
Estrutura Do ... Loop .............................. 79
Estrutura For ... Next .............................. 80
Estrutura For Each ... Next...................... 81
Outros exemplos de criação de loops .... 82
Listando arquivos existentes .................. 82
Usando estrutura Do ... Until .................. 83

CAPÍTULO 11

Criando funções .................................................... 84

CAPÍTULO 12

Personalizando o sistema ...................................... 87


Limpeza dos dados para novo cadastramento 87
Criando uma barra de ferramentas ............... 88
Criando uma barra de menus internos ... 89
Anexando uma barra de ferramentas ao arquivo. 89
Anexando macros a botões .......................... 90
Códigos para ativar a barra de ferramentas .. 90
Ocultando a barra de ferramentas ................ 91
Posição de uma barra de ferramentas........... 92
Desabilitando um item da barra ................... 93
Inicializando o sistema ................................. 93
Finalizando seu sistema de cadastro ............. 94
Posicionando o cursor no 1°- registro em branco 94
Ativando o controle spiParcelas ............. 95
A obra completa ..................................... 95

indice.p65 8 17/6/2004, 10:44


Algumas
Algumas novidades
novidades na
na versão
versão XP
XP
Tem novidade no Excel XP? Tem, sim, senhor! A quinta versão
do mais enigmático dos aplicativos do Office traz aqueles pequeno-
grandes aperfeiçoamentos de praxe. Conheça, neste capítulo, as ino-
vações relacionadas à localização de planilhas, cabeçalhos e rodapés
e diagramas. Não se esqueça, é claro, da estréia dos novos botões de
AutoSoma e Bordas
Bordas.

• LOCALIZANDO PLANILHAS

Muitas vezes geramos arquivos que depois de algum tempo não


lembramos onde guardamos. Para resolver esse problema, podemos
solicitar ao Excel que faça uma pesquisa em nosso computador.
Como? Veja nos passos a seguir:

1 Clique no menu Ar quiv


Arquiv
quivoo>P esquisar
Pesquisar
esquisar.
Aparecerá uma caixa de diálogo do lado direito da tela. Preencha-a
da seguinte forma:

Te xto de pesquisa:
pesquisa:Digite nesse campo o texto que está
tentando localizar.
Pesquisar em: Selecione o local (pasta) em que deseja pesquisar.
O ideal é escolher a opção Meu Computador (como na figura a
seguir), dessa forma, serão verificados disquetes, CDs, redes e pastas.

Algumas novidades na versão XP 9

cap_01.p65 9 16/6/2004, 17:40


Os resultados devem ser: Nesta, que é a última opção do menu,
podemos escolher o tipo de arquivo que queremos pesquisar –
podem ser arquivos de Word, Excel e Access (ou seja, qualquer
arquivo do pacote Office), ou mesmo figuras.

Para iniciar a pesquisa, pressione o botão Pesquisar


esquisar..

• EXIBINDO DETALHES

10 Treinamento avançado em Excel

cap_01.p65 10 16/6/2004, 17:40


Em versões anteriores ao Windows XP,para ocultar ou visualizar alguns
detalhes existentes na planilha, utilizávamos o menu Ferramentas >
Opções
Opções,habilitando ou desabilitando os itens desejados.A partir da versão
XP, o processo tornou-se muito mais rápido e podemos utilizar o menu
Exibir
Exibir,que fornece as seguintes opções:
• Barra de fórmulas;
• Painel de tarefas;
• Barra de status.

• CABEÇALHOS E RODAPÉS

Nas versões anteriores do Excel, para inserir cabeçalhos era


necessário clicar em Exibir > Conf igur
Configur ar > Ca
igurar beçalho/Rodapé
Cabeçalho/Rodapé
beçalho/Rodapé.
Nessa guia era possível selecionar um tipo de cabeçalho ou rodapé
entre os pré-definidos, ou incluir um novo, clicando no botão
Per sonalizar ca
ersonalizar beçalho
cabeçalho
beçalho.
A partir da versão XP, podemos agilizar essa tarefa no menu Exibir >
Ca beçalho e rrodapé
Cabeçalho odapé
odapé, e criar um novo cabeçalho por meio do mesmo
botão – Per sonalizar ca
ersonalizar beçalho –, o qual oferece algumas opções
cabeçalho
que já existiam nas versões anteriores, e outras que são novidades
da versão XP:

Formata os caracteres selecionados, alterando fonte, tamanho,


cor e estilo dos mesmos.

Insere o código [&Página], o qual, no momento da impressão,


é substituído pelo número da página atual.

Insere o código [&Páginas], o qual, no momento da impressão,


é substituído pelo número total de páginas existentes na planilha.

Insere o código [&Data], o qual, no momento da impressão, é


substituído pela data da impressão.

Insere o código [&Hora], o qual, no momento da impressão, é


substituído pela hora da impressão.

Algumas novidades na versão XP 11

cap_01.p65 11 16/6/2004, 17:40


(*) Insere o código &[Caminho]&[Arquivo], o qual, no momento
da impressão, é substituído pelo caminho e nome da planilha atual.

Insere o código &[Arquivo], o qual, no momento da impressão, é


substituído pelo nome do arquivo.

Insere o código &[Guia], o qual, no momento da impressão, é


substituído pelo nome da guia da planilha atual.

(*) Insere o código &[Figura], o qual, no momento da impressão,


é substituído por uma figura pré-selecionada.

(*) Formata a figura selecionada, permitindo alterar sua largura e


altura, ou mesmo recortá-la.

(*) Comandos incorporados a partir da versão XP.

• DIAGRAMAS

Para inserir diagramas no Excel, clique em Inserir > Diagramas e


siga estes passos:

1 Escolha o tipo de diagrama que preferir.

2 Clique na caixa desejada e digite o texto que quer inserir.

12 Treinamento avançado em Excel

cap_01.p65 12 16/6/2004, 17:40


Inserindo novas caixas
Também é possível inserir novas caixas em seu diagrama. Para isso,
faça o seguinte:

1 Clique na caixa que deseja reproduzir.

2 Em seguida, clique no botão Inser ir ffor


Inserir or ma. Isso fará com que a
orma.
nova caixa seja inserida logo abaixo da caixa selecionada.

3 Tendo feito isso, basta digitar o texto desejado.

Formatando as caixas do seu diagrama


Para dar uma aparência pessoal aos seus diagramas, a nova versão
do Excel oferece opções especiais:

1 Dê um duplo clique sobre a caixa que deseja personalizar.

2 Aparecerá a caixa de diálogo de formatação, na qual é possível


fazer as seguintes alterações:

Algumas novidades na versão XP 13

cap_01.p65 13 16/6/2004, 17:40


Fonte – permite alterar tamanho, cor, estilo e efeitos da fonte, além
dela própria.
Alinhamento – permite alterar o alinhamento do texto dentro
da caixa.
Cor
Coreses e Linhas – permite alterar as cores de preenchimento,
da linha (moldura) da caixa e das setas (quando existentes).
Tamanho – permite dimensionar, girar e alterar a escala da caixa.
Proteção – (*) permite bloquear a caixa e o texto existente nela.
Mar
Marg gens – permite alterar as margens do texto dentro da caixa.
Web – em alguns navegadores irá exibir um texto alternativo
para facilitar a pesquisa de objetos, mas no caso de figuras, esse
texto é ignorado.
(*) Para que este comando seja executado, é necessário proteger
a planilha.

Alterando o layout
Para alterar o layout das caixas, siga estes passos:

1 Selecione a caixa desejada.

2 Dê um clique no botão La
Layyout
out.

3 Escolha um dos layouts existentes.

Outra maneira de alterar o layout é simplesmente clicar no bo-


tão mostrado na figura:

• ALINHAMENTO DE CÉLULAS

Para alinhar rapidamente uma ou mais células, podemos


utilizar os botões .

A partir da versão XP, encontramos também algumas opções de


alinhamento no menu For matar > Células > Alinhamento
ormatar Alinhamento. São elas:
Hor izontal – altera o alinhamento horizontal (da esquerda para
Horizontal
a direita) do conteúdo de uma célula.

14 Treinamento avançado em Excel

cap_01.p65 14 17/6/2004, 10:35


Ver tical – altera o alinhamento vertical (de cima para baixo) do
ertical
conteúdo de uma célula.
Contr ole de te
Controle xto – esta opção oferece três possibilidades:
texto
Retor no automático de te
Retorno xto – alinha o texto em mais de uma linha;
texto
Reduzir parparaa ajustar – reduz o tamanho da fonte para que todo
o conteúdo da célula seja apresentado dentro dela;
Mesc lar células – alinha o texto em mais de uma célula ao mes-
Mesclar
mo tempo, recurso bastante utilizado para casos em que os títulos
estão na primeira linha.
Or ientação – permite rotacionar o texto dentro da célula.
Orientação
Dir eção do te
Direção xto – permite alterar a ordem de leitura dos dados exis-
texto
tentes na célula, que pode ser da esquerda para a direita ou o contrário.

• BOTÃO AUTOSOMA

A partir da versão XP, podemos selecionar um conjunto de célu-


las com valores e ativar o botão AutoSoma .
Para facilitar o trabalho, foram incorporadas as funções mais uti-
lizadas na criação de fórmulas, tais como SOMA, MÉDIA, CONTAR,
MÁXIMO E MÍNIMO, entre outras.

• DESENHANDO BORDAS

Nas versões anteriores do Excel, só era possível criar bordas com


linhas na cor preta e praticamente com a mesma espessura. Quem
quisesse modificar esse padrão tinha de utilizar o menu Formatar >
Células > Bor das
Bordas
das. No Windows XP, além das bordas convencionais,
encontramos a opção Desenhar bor das
bordas
das.Assim, podem-se criar bordas
com os seguintes passos:

Algumas novidades na versão XP 15

cap_01.p65 15 16/6/2004, 17:40


1 Ative o botão Desenhar bordas
bordas.

2 Clique no botão Estilo da linha:

3 Clique no botão Cor da linha:

Aparecerá um lápis indicando que deve ser riscada a célula na qual


desejamos criar a linha:

• A ÁREA DE TRANSFERÊNCIA

Para colar um objeto utilizamos o botão , o qual insere na po-


sição atual do cursor o conteúdo da área de transferência. Na ver-
são XP foram incorporadas novas tarefas ao botão:

Fórmulas – cola a última fórmula que foi copiada na planilha.


Valor es – cola o valor da célula, ou seja, ignora a fórmula e inse-
alores
re somente o resultado do cálculo.
Sem bordas – cola a fórmula na célula atual e ignora a borda formatada.
Transpor – cola as células em posição inversa. Suponha, por exem-
plo, que você tenha selecionado várias células que estejam dispostas em
uma linha; na transposição, as mesmas células serão coladas, só que
agora dispostas em colunas.
Colar vínculo – cola o vínculo do arquivo, ou seja, insere a fór-
mula, bem como todo o caminho utilizado para a sua criação. Dessa
forma, ao atualizar os dados da planilha de origem, a planilha de
destino é atualizada.
Colar especial – cola os dados como um objeto.

16 Treinamento avançado em Excel

cap_01.p65 16 16/6/2004, 17:40


Funções
As funções são o centro nervoso do Excel. Não, não se trata de recursos
que causam chiliques a torto e a direito. Muito pelo contrário: é por meio
das funções que conseguimos agilizar cálculos e elaborar planilhas sofisti-
cadas. E há funções para todo tipo de operação. Desde as somas mais
simples até intrincadas fórmulas estatísticas, esse é o caminho das pedras!
Neste capítulo, trataremos de uma parte muito importante do
Excel: as funções avançadas de texto, matemática, estatística e de data
e hora.Afinal de contas, por mais que se trabalhe com uma ferramenta,
há sempre alguma coisa a aprender! Aqui, você vai aprender a:

• Adicionar novas funções ao Excel por meio de suplementos;


• Localizar textos e códigos em células;
• Trabalhar com duas ou mais funções em uma só;
• Efetuar outros cálculos usando a função SUBTOTAL;
• Efetuar cálculos estatísticos com a função FREQÜÊNCIA;
• Identificar as mensagens de erro apresentadas em funções.

O Microsoft Excel possui cerca de 329 funções, divididas nas seguin-


tes categorias:

• Financeiras
• Data e hora
• Matemática e trigonométrica
• Estatística
• Procura e referência
• Banco de dados
• Texto
• Lógica
• Informações

Disponibilizando funções
Algumas funções podem não estar disponíveis quando você quiser
usá-las, sendo necessário torná-las disponíveis. Para isso, basta clicar em
Ferramentas > Suplementos
Suplementos. Surgirá a seguinte tela:

Funções 17

cap_02.p65 17 16/6/2004, 17:39


Habilite a caixa de seleção Ferramentas de análise para que todas as
funções fiquem disponíveis. Para inserir funções, utilize o botão de Inserir
função . Confira, agora, algumas funções interessantes:

• FUNÇÕES DE TEXTO

Função PROCURAR
Imagine que você queira localizar uma determinada seqüência de
caracteres existente em uma célula – por exemplo, o código de um
produto que esteja na mesma célula em que está o nome do produto,
como no exemplo a seguir:

Para isso, você pode utilizar a função PROCURAR, que possui a


seguinte sintaxe:

=PROCURAR(texto a localizar;célula com o texto;nº inicial)

Em que:
Texto a localizar – é o texto que você deseja localizar. Se o conteúdo
a procurar for um número, basta digitá-lo diretamente dentro dos parênte-
ses, sem nenhuma formatação. Para procurar o valor R$ 2500,00, por
exemplo, digite apenas 2500. Se o conteúdo não for numérico (por exem-
plo, o símbolo #), você deve digitá-lo entre aspas (“”).

18 Treinamento avançado em Excel

cap_02.p65 18 16/6/2004, 17:39


Célula com o texto – é o endereço da célula em que o símbolo,
valor ou texto deve ser procurado.
N o- inicial – é o parâmetro no qual você pode especificar a partir
de qual caractere a pesquisa deve ser iniciada. É possível, por exemplo,
procurar o símbolo # a partir da posição 20. Caso você não especifique
o número inicial, o Excel vai considerar que a pesquisa deve ser iniciada
a partir do primeiro caractere (11).
No exemplo a seguir, o Excel vai localizar o símbolo # dentro do
conteúdo da célula A2:

Função LOCALIZAR
Outra função que faz pesquisa de caracteres é a LOCALIZAR.
A diferença entre ela e a função PROCURAR é que a segunda faz distinção
entre maiúsculas e minúsculas, enquanto a LOCALIZAR não faz:

Usando a função ESQUERDA com a função LOCALIZAR


A função ESQUERDA retorna um número X de caracteres a partir
de um determinado texto, da esquerda para a direita. O número de
caracteres X é você quem especifica.
Suponha que, na tabela da figura a seguir, você queira retirar apenas
a descrição dos produtos. A melhor maneira de fazer isso é usar conjun-
tamente as funções ESQUERDA e LOCALIZAR:

• FUNÇÕES MATEMÁTICAS

Função SUBTOTAL
Essa função retorna um subtotal em um banco de dados, podendo execu-
tar a soma, a média, o mínimo e o máximo, entre outras operações, em uma
lista de dados. A sintaxe da função SUBTOTAL é a seguinte:

Funções 19

cap_02.p65 19 16/6/2004, 17:39


=SUBTOTAL (número da função; células a calcular)

Em que:
Número da função – é um número entre 1 e 11 que especifica qual
função deve ser usada para calcular o subtotal. No Excel, cada função
corresponde a um número, como mostra a tabela a seguir:

Número da função Função


1 MÉDIA
2 CONTA

3 CONT.VALORES
4 MÁX
5 MÍN

6 MULT
7 DESVPAD
8 DESVPADP

9 SOMA
10 VAR
11 VARP

Veja um exemplo de utilização da função SUBTOTAL:

20 Treinamento avançado em Excel

cap_02.p65 20 16/6/2004, 17:39


• FUNÇÕES ESTATÍSTICAS
Função FREQÜÊNCIA
Calcula a freqüência de determinados valores dentro de um intervalo
de valores, retornando uma matriz. Imagine que você tenha, por exemplo,
uma representação de veículos, e queira saber o número de modelos, por
cidade, que se encaixam em determinadas faixas de preço – isto é, a fre-
qüência dessas faixas de preço entre os modelos de carros. Esse exemplo
pode ser observado na tabela da figura a seguir:

Nessa tabela, as células B13:B16 trazem os valores das faixas de


preço: a primeira faixa vai até R$ 15.000,00; a segunda faixa vai de R$
15.001,00 até R$ 25.000,00; e assim por diante.Veja que, apesar de isso
não aparecer diretamente nos valores das células, a faixa posterior não
inclui o último valor da faixa anterior – por exemplo, a segunda faixa
não inclui o valor R$ 15.000,00, mas sim o valor seguinte, que é de R$
15.001,00.Vejamos, agora, como fazer para saber a freqüência de cada
uma dessas faixas de preço no Excel:

1 Defina as faixas de dados que deseja analisar. No nosso exemplo,


elas foram criadas nas células B13:B16.

2 Selecione as células adjacentes à coluna com as faixas de dados


(C13:C17).

3 Clique sobre o botão Inserir função . Será aberta esta janela:

Funções 21

cap_02.p65 21 16/6/2004, 17:39


4 Selecione a função FREQÜÊNCIA e dê OK
OK.

5 Na caixa de diálogo que aparecer, clique no botão com a seta ver-


melha ao lado do primeiro campo. Na planilha, selecione a área que
contém os dados a serem analisados (B2:E11):

6 Na janela que aparecer, clique no botão com a seta vermelha, no


primeiro campo, para voltar à tela de inserção da função FREQÜÊNCIA.
Agora clique no botão com a seta vermelha ao lado do segundo campo.
Na planilha, selecione as células que contêm as faixas de dados que vão
servir de base para o cálculo (B13:B16).

7 Pressione as teclas Ctrl + Shift + Enter para que sejam inseridos os


valores correspondentes a cada uma das faixas. Não use a tecla Enter sozi-
nha, ou o resultado será inserido somente na primeira célula:

22 Treinamento avançado em Excel

cap_02.p65 22 16/6/2004, 17:39


• FUNÇÕES DE DATA E HORA

Função DATADIF
Para calcular a diferença entre duas datas, levando em conta o
número de dias, meses ou anos, use a função DATADIF, que possui a
seguinte sintaxe:

=DATADIF(data_inicial;data_final;tipo de diferença desejado)

Na qual tipo de diferença desejado pode ser representado como:

Unidade Retorno

“Y” O número de anos completos entre a data inicial e a


data final.

“M” O número de meses completos entre a data inicial e a


data final.

“D” O número de dias completos entre a data inicial e a


data final.

“MD” A diferença entre as datas inicial e final, sendo que


meses e anos são ignorados.

“YD” A diferença entre as datas inicial e final, sendo que


dias e anos são ignorados.

A seguir, veja um exemplo de uso da função DATADIF com diferen-


tes formatos para o retorno do valor:

Funções 23

cap_02.p65 23 16/6/2004, 17:39


• FUNÇÕES DE INFORMAÇÕES

As funções de informações são aquelas que analisam fórmulas e condi-


ções e respondem com VERDADEIRO ou FALSO. Elas são bastante úteis
para verificar o tipo de conteúdo de determinadas células, se estão vazias
ou não,se estão preenchidas com textos ou números etc. A tabela a seguir
mostra exemplos das principais funções lógicas:

• JUNTANDO MAIS DE UMA CATEGORIA DE FUNÇÕES

Função PROCV
A função PROCV efetua uma pesquisa no sentido vertical em uma
tabela de dados, retornando um dado existente em qualquer uma das
colunas. Sua sintaxe é:

=PROCV(valor procurado;matriz_tabela_número índice coluna)

Ou seja:

=PROCV(o que pesquisar;área a pesquisar;número da coluna


a trazer )
Imagine a seguinte tabela:

24 Treinamento avançado em Excel

cap_02.p65 24 16/6/2004, 17:39


Para verificar qual é o nome de determinado filme (título), siga estes passos:
1 Nomeie a área com o catálogo dos filmes como FITAS, selecionando as
células e indo ao menu Inserir > Nome > Definir
Definir; ou então digitando o
nome diretamente na Caixa de nome e pressionando Enter.

2 Crie a tabela com os dados das vendas.

3 Posicione o cursor na célula D4 (ou na célula em que quiser que


apareça o resultado da busca).

4 Clique no botão Inserir função ..

5 Selecione as funções de Procura e Referência


Referência.

6 Clique sobre a função PROCV e dê OK


OK.

7 Insira os argumentos da função, conforme o exemplo abaixo:

Funções 25

cap_02.p65 25 16/6/2004, 17:39


8 Pressione OK
OK; com isso, será informado o nome do filme que você
está procurando. Copie para as células abaixo.

9 Experimente alterar o código do filme para ver o Excel preencher


os campos automaticamente.

Se o usuário por acaso escolher um filme que não existe na lista, o


Excel vai retornar este erro:

Para evitar esse tipo de problema, podemos criar uma combinação


com as funções lógicas SE, ÉERROS e PROCV, como mostra a explica-
ção a seguir:

1 Vamos começar conhecendo a sintaxe de cada uma das três fun-


ções que vamos usar:

=SE (condição; faça caso condição verdadeira; faça caso condi-


ção falsa)
=ÉERROS(fórmula)
=PROCV(valor procurado; local a procurar; coluna desejada)

2 Para juntar as três funções, devemos construir uma expressão com


esta sintaxe:

=SE(ÉERRROS (PROCV)); exiba 0; exiba o resultado de PROCV)

26 Treinamento avançado em Excel

cap_02.p65 26 16/6/2004, 17:39


3 Deixe o cursor no primeiro PROCV (título do filme) e pressione o
botão Inserir função para editar o conteúdo da fórmula, pois agora
você vai adicionar as funções SE e ÉERROS.

4 Para inserir novas funções, utilize a área com a Caixa de nome


nome,
que agora exibe a última função utilizada:

5 Utilize a função SE, inserindo os dados mostrados na figura:

6 Editando a função com a Caixa de nome


nome, você pode ir de uma
função a outra com um clique sobre a Barra de fórmulas
fórmulas:

Funções 27

cap_02.p65 27 16/6/2004, 17:39


Gerando gráficos automáticos
Gerando gráficos automáticos
O que todo mundo quer, hoje em dia, é poder apertar um único
botão e, com isso, resolver todos os problemas. Nada de errado nis-
so, pelo menos em se tratando de gerenciamento de dados. Que tal
construir gráficos que se atualizem automaticamente quando a ta-
bela de dados for alterada? Que tal ter à mão um sistema que varra
a sua planilha e gere um gráfico a partir dos dados de que você
precisa? Excelente, não? E o melhor: não é difícil. Ao menos, não
com os recursos oferecidos pelo Excel.
Veja como construir um gráfico dinâmico que incorpore recur-
sos de formulários e lista de dados:

1 Crie, em uma planilha em branco, a seguinte tabela de dados:

2 Selecione as células com os nomes das publicações (A3:A8) e


nomeie esse intervalo como PRODUTOS.

3 Selecione todos os dados (A2:G8) e nomeie esse intervalo


como VENDAS.

4 Vá até a Plan2 e inclua nela estes dados:

5 Ative a barra de ferramentas de formulários com o comando


Exibir > Bar
Barrra de ffer
er
errramentas > For
ormm ulários
ulários
ios.

28 Treinamento avançado em Excel

cap_03.p65 28 16/6/2004, 17:39


6 Insira um controle de caixa de combinação, clicando neste botão:

7 Agora você precisa ativar as propriedades do controle que aca-


bou de criar. Para isso, clique nele com o botão direito do mouse, dê
um clique sobre a opção For matar contr
ormatar ole
controle
ole, e, depois, preencha os
campos da janela como mostra a figura:

Procurando dados específicos


Ainda usando o mesmo documento do Excel que você criou,
vamos procurar alguns dados específicos, como, por exemplo, o
nome de determinado produto. Isso pode ser feito usando-se a fun-
ção ÍNDICE, que tem a seguinte sintaxe:

=ÍNDICE(área a ser varrida; nº da linha; nº da coluna)

Os nomes dos produtos estão no intervalo de células PRODU-


TOS; portanto, essa é a área que deve ser varrida. A linha que você
procura é aquela na qual foi vinculado o controle de caixa de com-
binação – logo, trata-se do resultado existente em C3. Dessa forma,
a função para verificar o nome do produto deverá ser:

Gerando gráficos automáticos 29

cap_03.p65 29 16/6/2004, 17:39


Se, em vez do nome de um produto, você quiser verificar os dados de
JAN, basta aplicar esta fórmula:

Repare que, para os meses, você deve alterar apenas o número


da coluna.Assim, quando for selecionar uma nova publicação, aparece-
rão os dados referentes às vendas expressas nessa coluna.

• CRIANDO O GRÁFICO

Para criar um gráfico com os dados da planilha, comece selecio-


nando as duas linhas que contêm os dados da venda, ou seja, a linha
que apresenta os nomes dos meses e a linha que traz os valores das
vendas. Feito isso, você já pode ativar o assistente de gráficos para
criar um gráfico do tipo “pizza”, seguindo este passo-a-passo:

1 Selecione os dados.

2 Clique no botão Assistente de ggráf


ráf ico
ráfico
ico.

30 Treinamento avançado em Excel

cap_03.p65 30 16/6/2004, 17:39


3 Clique na opção de gráfico do tipo “pizza”.

4 Clique no botão Avançar


ançar.

5 Defina a opção Sér ies em como Linhas e clique em Avançar


Séries ançar.

6 Desabilite a opção Mostrar legenda na guia Legenda


Legenda.

Gerando gráficos automáticos 31

cap_03.p65 31 16/6/2004, 17:39


7 Na guia Rótulo de dados
dados, habilite as opções Porcentagem e Nome
da categoria
categoria.

8 Pressione A v ançar e, na tela que surgir, selecione a opção


Como objeto emem, para que o gráfico seja posicionado como um
objeto na planilha.

9 A cada vez que você selecionar um produto diferente, o Excel irá


criar um novo gráfico, de acordo com os dados selecionados.

32 Treinamento avançado em Excel

cap_03.p65 32 16/6/2004, 17:39


Noções de
Noções de macro
macro
Imagine ter de digitar as mesmas informações todos os dias, a cada
15 minutos.Veja: isso não é uma obra de ficção.Para quem trabalha com
serviços financeiros e administrativos – ou seja, 90% do pessoal do escri-
tório de uma empresa –, esse tipo de situação pode ser realmente roti-
neiro. Mas, felizmente, existem as macros, pequenas aplicações que po-
dem nos ajudar a economizar muito tempo e poupar nossa paciência.
Neste capítulo, você verá que o sonho da rapidez no trabalho é possível.
Uma macro nada mais é do que uma seqüência de comandos arma-
zenada em um botão. Usando macros, você pode gerar gráficos com
configurações especiais, aplicar cálculos extensos repetidas vezes, entre
muitos outros procedimentos, apenas clicando em um botão. Basta
criar macros bem elaboradas.
Neste capítulo, você vai deparar freqüentemente com o termo Visual
Basic ffor
or Applications
pplications, o famoso VB
VBA A, que é uma linguagem de progra-
mação voltada para aplicativos. O VBA vem incorporado ao Office, e, por
isso, pode ser utilizado em qualquer aplicativo desse pacote, como o MS
Excel, o MS Word, o MS Access etc..Todo código gerado no VBA é compi-
lado, e, por esse motivo, executa loops (laços) de programação rapida-
mente. Outra vantagem de utilizar o VBA é que o código gerado pode ser
lido em qualquer aplicativo Microsoft, garantindo uma padronização no
modo de programação.

• M A C R O PA R A C L A S S I F I C A R D A D O S E M
UMA PLANILHA

Para entender um pouco sobre macros, nada melhor do que partir


para a prática e criar uma macro simples. Por enquanto, você vai seleci-
onar a ação para a sua macro a partir de uma lista pré-definida. No caso,
vamos criar uma macro para classificar os dados mostrados na planilha
a seguir:

Algumas novidades na versão XP 33

cap_04.p65 33 16/6/2004, 17:38


1 A sua macro vai se chamar CLASSIFICA. Posicione o cursor em
qualquer célula e vá ao menu Ferramentas > Macro > Gravar nova
macro
macro, para acessar esta tela:

2 Digite o nome da macro ( CLASSIFICA) e observe as opções


disponíveis:

Nome da macro – Procure escolher um nome significativo, e que tenha


a ver com a função que a macro vai executar.
Tec la de atalho – solicita ao MS Excel que rode todas as macros por meio
ecla
de teclas de atalho (por exemplo, Ctrl + C). Mas, cuidado com essa opção,
pois, se existir algum comando que utilize as mesmas teclas, ele será
desabilitado,e a macro passará a funcionar em seu lugar.
Armazenar macro em – as tarefas a ser executadas são arquivadas em um
determinado local. Esse local pode ser a Pasta pessoal de macros
macros, que irá
criar um arquivo Pessoal.XLS (uma pasta oculta que permanecerá na pasta
de inicialização do MS Excel); uma Nova pasta de trabalho
trabalho, que irá criar
um arquivo (planilha) para armazenar somente a macro e a última opção;

34 Treinamento avançado em Excel

cap_04.p65 34 16/6/2004, 17:38


ou a pasta de trabalho atual (opção Esta pasta de trabalho
trabalho), que faz com
que o arquivo de macros seja armazenado juntamente com a planilha atual.
Escolhendo essa última opção, se a planilha atual for movida ou copiada
para um outro local, as macros irão junto com ela.

3 Ao pressionar OKOK, todos os comandos a ser executados na planilha


serão armazenados. Por isso, fique atento: se você cometer algum erro,
pode ser mais fácil excluir a macro e começar tudo de novo do que
tentar consertar o erro.

4 Posicione o cursor no primeiro registro da tabela (célula B5) e


utilize o menu Dados > Classificar
icar. Escolha, primeiro a opção País
Classificar aís,e, em
seguida, Produto
Produto.

5 Depois de fazer a classificação, pressione o botão Parar gravação


gravação.

• FORMAS DE EXECUTAR UMA MACRO


Uma vez que você já tenha criado a sua macro, como fazer para
rodá-la? É simples.Você pode usar as teclas de atalho – selecionadas
durante o desenvolvimento da macro –, comandos, ou botões.

Teclas de atalho
Para rodar uma macro usando teclas de atalho, basta pressionar as
teclas definidas na hora da sua criação.

Comandos
Para acessar o comando que apresenta as macros disponíveis,
faça o seguinte:

1 Pressione as teclas Alt + F8.

2 Dê um clique no nome da macro que quer executar e pressione o


botão Ex ecutar
Executar
ecutar.

Algumas novidades na versão XP 35

cap_04.p65 35 16/6/2004, 17:38


Criando botões na planilha
Outra maneira de executar a macro é criar um botão para ela:

1 Ative a barra de ferramentas de formulários em Exibir > Barra de


ferramentas > Formulários
Formulários.

2 Dê um clique na opção Botão de comandos


comandos.

3 Clique e arraste sobre a planilha no ponto em que deseja criar o


botão. O Excel exibirá uma lista com as macros existentes. Clique sobre
a macro que você quer associar ao botão:

4 Para alterar o texto do botão, basta clicar dentro dele e editar o texto:

• MACRO PARA ENCONTRAR SUBTOTAIS

Vamos criar, ainda na mesma planilha em que você gravou a macro


para classificação por País e Produto, uma segunda macro, para encon-
trar o subtotal de cada país. Siga estes passos:

1 Ative a gravação de novas macros, indo ao menu Ferramentas >


Macros > Gravar nova macro
macro.

36 Treinamento avançado em Excel

cap_04.p65 36 16/6/2004, 17:38


2 Nomeie a macro como SUBTOTAIS e dê OK
OK.

3 Posicione o cursor sobre o primeiro registro (B5) e clique em


Dados > Subtotais
Subtotais.

4 Pressione OK e calcule um novo subtotal, agora por produto. Des-


ta vez, não se esqueça de desabilitar a opção Substituir subtotais atu-
ais
ais. Dê OK
OK.

5 Para executar a macro, desative os subtotais criados, indo ao menu


Dados > Subtotais e pressionando o botão Remover todos e, em se-
guida, OK
OK.
6 Crie um botão para a execução dessa macro:

• MACROS DE ENDEREÇOS ABSOLUTOS / RELATIVOS

No tópico anterior, você criou duas macros. Se reparar nas referên-


cias que essas macros fazem às células que contêm as fórmulas, vai
perceber que esses endereços são absolutos. O que isso quer dizer? Por
exemplo: ao selecionarmos o intervalo de células A1:F4 e alterarmos o
estilo para negrito, sempre que executarmos a macro, o mesmo endere-
ço, tendo conteúdo ou não, será alterado para negrito. Ou seja, uma

Algumas novidades na versão XP 37

cap_04.p65 37 16/6/2004, 17:38


macro com endereço absoluto será executada sempre na mesma posi-
ção na planilha.
Já uma macro com endereço relativo pode atuar sobre outras célu-
las que não a que serviu originalmente como base. Portanto, quando
precisamos executar um procedimento em várias células da planilha, o
melhor a fazer é utilizar um endereço relativo.

Macros com endereços absolutos


Para entender a diferença entre os dois tipos de endereços, digite a
planilha abaixo:

1 Posicione o cursor em A2 e ative o gravador de macros.

2 Nomeie a macro como ABSOLUTOS e dê OK


OK.

3 Digite seu nome e pressione a tecla Tab.

4 Digite seu endereço e, novamente, pressione Tab.

5 Digite seu telefone e pare a gravação da macro.


Para visualizar o efeito da macro que você acabou de criar, execute-
a várias vezes.Você irá perceber que o cursor insere o nome, o endereço
e o telefone sempre na mesma linha (2 2).

Editando a macro
Para editar a macro, use o comando Ferramentas > Macros Macros. Na
janela que aparecer, dê um clique sobre o nome da macro desejada e
pressione o botão Editar
Editar.
Se preferir usar teclas de atalho para abrir o Editor do Visual Basic,
basta pressionar Alt + F11.
Editando a macro ABSOLUTOS no editor do Visual Basic, você verá
estas instruções:

38 Treinamento avançado em Excel

cap_04.p65 38 16/6/2004, 17:38


Macros com endereços relativos
Vamos, agora, criar uma macro com endereço relativo. Para isso,siga
estes passos:

1 Apague o conteúdo da linha 2 para gravar uma nova macro.

2 Posicione o cursor na célula A2 e grave uma nova macro com o


nome RELATIVOS.

3 Observe que, assim que o gravador de macros for iniciado, apare-


cerá na tela uma pequena barra de ferramentas com dois botões:

4 Clique sobre o botão Referência relativa .

5 Na célula A2, digite seu nome e pressione a tecla Tab.

6 Em B2, digite seu endereço e pressione Tab.

7 Em C2, digite seu telefone.

8 Pressione a seta para baixo para passar para a linha de baixo.

9 Posicione o cursor sob a célula que contém o seu nome (A3).

10 Pare a gravação da macro. Execute a macro várias vezes e observe a


diferença entre o comportamento dela e o da macro ABSOLUTOS.

Algumas novidades na versão XP 39

cap_04.p65 39 16/6/2004, 17:38


11 Edite a macro no editor do Visual Basic (Alt + F11).Você verá as
seguintes instruções:

Entendendo o código

Comando Descrição

ActiveCell Célula ativa.

ActiveCell.Select Seleciona a célula ativa.

ActiveCell.FormulaR1C1=”Sandra” Insere, na célula ativa, o


conteúdo Sandra.

ActiveCell.Offset(0,1) Desloca o cursor 0 linhas


para baixo e uma coluna
para a direita.

ActiveCell.Offset(1,-2) Desloca o cursor uma


linha para baixo e duas
colunas para a esquerda.

40 Treinamento avançado em Excel

cap_04.p65 40 16/6/2004, 17:38


O editor do Visual Basic
O editor do Visual Basic no Excel
no Excel
As macros realmente facilitam a vida, não? E o que vimos até
aqui é apenas o começo. Se você quiser se aventurar pelo mundo
da automatização de processos, vale a pena dedicar algum tempo
ao estudo do Visual Basic. Neste capítulo, apresentaremos uma vi-
são geral sobre o editor do VB que vem embutido no MS Excel. Com
um pouco de perseverança, você poderá fazer parte daquele seleto
clube de pessoas que dizem: “Fazer o relatório estatístico dessas
dez planilhas? É simples: espera um minutinho que eu crio uma
macro para isso...”
A primeira coisa a fazer é familiarizar-se com o ambiente de tra-
balho oferecido pelo editor do Visual Basic. Só para lembrar, para
abrir o editor basta pressionar Alt + F11 ou ir ao menu Fer errramen-
tas > Macr
Macrosos > Editor do Visual Basic
Basic. Se preferir abrir a tela do
editor do VBA diretamente para uma macro que já exista no seu
documento, você pode ir até Fer errramentas > Macr os > Macr
Macros Macro o , clicar
sobre o nome da macro a ser editada, e depois no botão EditarEditar.

• A JANELA DO EDITOR DO VISUAL BASIC

O editor do Visual Basic no Excel 41

cap_05.p65 41 16/6/2004, 17:38


Projeto – Nesta janela, encontramos a hierarquia do projeto que
está sendo editado. Ela mostra o nome do arquivo de projeto (*.xls), as
planilhas que ele contém etc.. Ou seja, a janela Projeto permite visualizar
os objetos da aplicação atualmente aberta (pasta de trabalho, docu-
mentos e módulos). Caso não esteja visualizando essa área, pressione
o botão ou tecle Ctrl + R. Nessa janela existem ainda três ícones
que permitem alterar o modo de visualização da estrutura:
Abre uma tela (página) com os módulos (rotinas) de classe da aplicação.

Exibir código Exibe a janela de módulo que contém


o código em VBA que está associado ao
objeto selecionado.
Exibir objeto Alterna entre a janela do Editor do Vi-
sual Basic e a janela original da aplica-
ção, com o objeto selecionado.
Alternar entre pastas Faz com que a exibição da janela PrPro-
o-
jeto alterne entre a hierarquia dos ob-
jetos e uma lista simples dos mesmos.
Na janela Pr ojeto
Projeto
ojeto, repare que há vários ícones diferentes. O signifi-
cado deles está na tabela a seguir:
Permite a abertura de todos os objetos
de uma pasta de trabalho, como
planilhas, formulários, módulos etc..
Pasta1 é o nome do arquivo que está
sendo editado no momento; quando o
arquivo é salvo, o nome é substituído
pelo que você escolher.
É a referência à pasta de trabalho que está
aberta no momento. Mostra também to-
dos os eventos (procedimentos) perten-
centes a essa pasta, tais como abertura
de arquivo, fechamento de arquivo etc.
Exibe a folha de código com as rotinas
para a planilha específica.
Abre uma tela com os códigos existen-
tes para a criação de rotinas (macros)
diversas para essa pasta de trabalho.

42 Treinamento avançado em Excel

cap_05.p65 42 17/6/2004, 10:38


Abre uma tela (página) com os
módulos (rotinas) de classe da aplicação.

Abre o formulário criado pelo usuário.

Propriedades – mostra o nome do módulo em uso e suas proprie-


dades atuais. Esta janela se divide em duas seções, uma com as proprie-
dades em ordem alfabética, e outra com as mesmas propriedades sepa-
radas por categorias de comandos.

Módulo – esta janela exibe o módulo atual. Módulo é a unidade


básica de um código em VBA, e funciona como se fosse um local em
que são armazenadas todas as macros criadas. Podemos também
descrever módulo como uma seqüência de instruções que ensina
ao MS Excel o que fazer.

Área de trabalho – trata-se da área disponível para a manipulação


dos módulos.

Módulos
Na tabela que acabamos de mostrar, falamos muito em módulo
módulo.
Como dissemos, um módulo é como um local em que são armaze-
nadas todas as macros criadas.Todo módulo possui procedimentos,
que são as normas para a condução da tarefa.
No VBA, todos os procedimentos devem começar com a instru-
ção SUB ou FUNCTION. Para entender melhor, observe o código da
macro ABSOLUTOS, que você criou no começo deste capítulo:

O editor do Visual Basic no Excel 43

cap_05.p65 43 17/6/2004, 10:38


Objetos
Outro conceito importante na programação com VBA é o de
objetos. Temos vários objetos dentro de um aplicativo: por exem-
plo, uma barra de ferramentas, uma planilha aberta, uma caixa de
texto etc.. Portanto, um objeto é um elemento controlável por meio
da linguagem VBA, e que é utilizado na execução de tarefas.
No VBA, quando você se refere a um objeto, na verdade está se
referindo a uma coleção de objetos que inclui o objeto em si. As-
sim, a referência deve conter primeiramente o nome da coleção à
qual o objeto pertence, e depois qual o item específico.Veja alguns
exemplos de referências a objetos no VBA:

WorkSheets(“Plan1.xls”)
orkSheets(“Plan1.xls”) Coleção de objetos Wor ksheet (plani-
orksheet
lhas), referindo-se ao objeto Plan1.

Rang e(“
Range(“ A1:C3”).Select
e(“A1:C3”).Select Coleção de objetos Range que se
Range
refere às áreas.

WorkBooks
orkBooks Coleção de objetos Works book pas-
ksbook
tas de trabalho.

Os objetos organizam-se em uma hierarquia. No topo dela en-


contra-se o objeto A pplication
pplication, que, no nosso caso, é o próprio Excel.
Abaixo de A pplication
pplication, em ordem decrescente de nível hierárqui-
co, aparecem os objetos Wor kbook
kbook, AddIn
orkbook AddIn, Dialog
Dialog,Men uBar
uBar, ToolBar
MenuBar oolBar,
Windo
indow w, e assim por diante. Para nos referir a um deles, precisamos
informar a que coleção pertence o objeto e qual é esse objeto:

O tipo mais comum de referência é aquele feito a uma planilha ou a


células de uma planilha.Tanto planilhas quanto células são objetos ativos.
A tabela a seguir mostra os objetos ativos no MS Excel:

44 Treinamento avançado em Excel

cap_05.p65 44 16/6/2004, 17:38


ActiveCell ActiveChart

Activ eDialog
ActiveDialog ActiveX
ActiveX

ActiveMen
ActiveMen uBar
eMenuBar ActiveP anel
ePanel
ActiveP

Activ ePr inter


ePrinter
ActivePr ActiveSheet
ActiveSheet

Activ eW
ActiveW indo
eWindo
indoww Activ eW
ActiveW or
eWorkbook
orkbook

Experimente, por exemplo, digitar as seguintes instruções logo


abaixo do código da sua macro:

Sub AlteraExibição()
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
.Zoom = 75
End With
End Sub

Para que a macro seja executada na janela de códigos, utilize o


botão ou a tecla F5. Ao voltar para a planilha, você verá que a
macro realizou as seguintes tarefas:

Eventos da planilha
Para alterar eventos de planilha, selecione uma das planilhas na
janela Pr ojeto e ative o objeto Wor
Projeto ksheet
orksheet
ksheet, como mostra a figura:

Sub AlteraExibição() Início da macro (procedimento)


With ActiveWindow Com a janela ativa
.DisplayGridlines = False Não exibir linhas de grades
.DisplayHeadings = False Não exibir cabeçalhos de linhas/colunas
.Zoom = 75 Zoom de 75%
End With Finaliza a janela ativa
End Sub Finaliza a macro

O editor do Visual Basic no Excel 45

cap_05.p65 45 16/6/2004, 17:38


Veja, na tabela a seguir, quais os principais eventos que podem ser
associados a uma planilha:

Evento Quando ocorre

Activate
Activate Quando uma planilha é ativada.

Befor
BeforeDoub
oreDoub leClic
eDoubleClic
leClickk Ao clicar duas vezes em uma planilha.

Befor
Befor eRightClic
oreRightClic
eRightClickk Ao clicar com o botão direito do mouse
sobre uma planilha.

Calculate Depois de toda a planilha ser recalculada.

Change
Change Quando as células das planilhas são
alteradas pelo usuário.

Deactivate
Deactivate Quando a planilha é desativada.

SelectionChange
SelectionChange Quando a seleção é alterada em uma
planilha.

46 Treinamento avançado em Excel

cap_05.p65 46 16/6/2004, 17:38


Exibindo mensagens ao usuário
As caixas de mensagem funcionam como a voz do programa, o
meio de comunicação entre o aplicativo e a pessoa que o está utili-
zando. São elas que avisam ao usuário quando acontece algum erro,
permitem que ele escolha o que fazer a seguir, ou mesmo abrem
espaço para que ele passe dados ao programa.
O VBA oferece modelos prontos de caixa de mensagem; basta
escolher o tipo adequado e configurá-lo. Com isso, você consegue
facilmente guiar o usuário para que ele aproveite completamente o
documento do Excel que você criou. Afinal de contas, quem não se
comunica se estrumbica!

• FUNÇÃO MSGBOX

É possível criar macros que exibam mensagens na tela, para in-


formar o usuário sobre alguma operação que tenha sido executada,
alertá-lo sobre erros etc. Só que, diferentemente do que temos feito
até agora, a mensagem em si não pode ser criada apenas ligando o
gravador de macros. Ela deve ser inserida como parâmetro para a
função MSGBOX, que tem a seguinte sintaxe:

MSGBOX “Mensagem”, tipo da caixa,“Título”

Em que:
Mensagem – é a mensagem que deverá aparecer na caixa. O texto
deve ser digitado entre aspas, com tamanho máximo de 1024 caracteres.
Se você quiser que o texto apresentado seja o valor de uma variável,
digite o nome da variável, sem aspas.
Tipo da caixa – define o tipo da caixa de diálogo (se será uma
informação, um alerta de erro etc.).
Título – Define o título da caixa de diálogo.

Exibindo mensagens ao usuário 47

cap_06.p65 47 16/6/2004, 17:38


Para testar a exibição de mensagens com a função MSGBOX,
crie, na janela do Editor do Visual Basic, uma macro com as se-
guintes instruções:

Sub TestaMensagem()
MsgBox “Esta mensagem só contém o prompt”
End Sub

Execute a macro pressionando a tecla F5. Você verá esta caixa


de mensagem:

• OUTROS EXEMPLOS DE MENSAGEM

Há vários tipos de caixa de mensagem.Vejamos agora um exem-


plo contendo um botão de OK OK. Este é o código da caixa:

Sub TestaMensagem2()
MsgBox “Prompt - Texto da mensagem”, _
vbExclamation + vbOKOnly,”VBOK é o tipo _
de botão, e TITLE é o título”
End Sub

No código, repare no símbolo de underscore (_) no fim da segun-


da linha. Ele é usado para quebras de linha. Quando uma linha de
comando não couber na linha da tela, quebre-a com um underscore.

Assim, mantém-se a continuidade do comando. O resultado do códi-


go digitado é o seguinte:

48 Treinamento avançado em Excel

cap_06.p65 48 17/6/2004, 10:39


• CAPTURANDO RESPOSTAS DO USUÁRIO

Na maioria das vezes, queremos que o usuário possa interagir


com a caixa de mensagem, escolhendo clicar em um botão ou inse-
rir algum dado. O VBA disponibiliza botões prontos para você in-
cluir na sua caixa de mensagem. Cada um deles tem um número
correspondente, bem como um código VBA. Veja quais são eles na
tabela a seguir:

Botão
Botão Número
Número correspondente
correspondente Códig
Código
o VB
Código
Código A
VBA
VBA
VBA
OK 1 VbOk
Cancelar 2 VbCancel
An ular
Anular 3 VbAbort
Repetir 4 VbRetry
Ignor ar
Ignorar 5 VbIgnore
Sim 6 VbYes
Não 7 VbNo

O código a seguir gera uma caixa de mensagem com três bo-


tões: An ular
ular, Repetir e Ignor
Anular ar
Ignorar
ar:

Sub TestaResposta ()
Resposta = MsgBox(“Pressione um dos _
botões abaixo:”, vbAbortRetryIgnore, _
“ATENÇÃO!!”)
If Resposta = 3 Then
MsgBox “Você pressionou ANULAR.”
End If
End Sub
Nessa caixa de mensagem, o usuário deve clicar em um dos
três botões:

Exibindo mensagens ao usuário 49

cap_06.p65 49 16/6/2004, 17:38


O código do botão selecionado pelo usuário será armazenado
em uma variável chamada Resposta. Se o usuário pressionar o botão
An ular
ular, o valor armazenado na variável será 3, e será gerada uma
Anular
nova mensagem.

Função INPUTBOX
Um tipo de caixa de mensagem ainda mais interativo é aquele
em que o usuário pode inserir dados. Para isso, você pode usar a
função INPUTBOX. Vejamos um exemplo. O código

Sub Entrada()
Resp = InputBox(“Qual é a palavra-chave?”)
Range(“A1”) = Resp
End Sub
, faz com que apareça a caixa de mensagem a seguir, em que o usu-
ário deve inserir determinada palavra-chave:

Neste outro exemplo, temos uma caixa de diálogo em que o usuário


deve inserir um valor de salário:

50 Treinamento avançado em Excel

cap_06.p65 50 16/6/2004, 17:38


• ADICIONANDO COMENTÁRIOS AO CÓDIGO

Comentários são trechos do código que não são executados, ser-


vindo apenas para manter uma documentação sobre ele. Eles são
muito úteis, inclusive para a própria pessoa que criou o código – por
exemplo, se você tiver que atualizar o programa depois de muito
tempo, vai ter condições de entender o que está expresso nele.
Para fazer com que um trecho do código seja um comentário no
VBA, basta colocar um apóstrofo (‘) no início da linha, como no
exemplo a seguir:

Sub Entrada()
Resp = InputBox(“Qual é a palavra-
‘chave?”,”Senha”)
‘Armazena em Resp (variável) a resposta da
‘pergunta de INPUTBOX
Range(“A2”) = Resp
‘Armazena na célula A1 a resposta existen
‘te na variável
End Sub

Exibindo mensagens ao usuário 51

cap_06.p65 51 16/6/2004, 17:38


Criando um formulário no VBA
No dia-a-dia, não queremos nem ouvir falar em formulários: imedia-
tamente nos vem à mente qualquer idéia relacionada com burocracia...
Mas, na hora de criar interfaces de macros, inclusive no Excel, os formu-
lários são essenciais. Eles funcionam, grosso modo, como caixas de men-
sagem turbinadas – muito turbinadas. Com um formulário, você pode
coletar dados do usuário, pedir que ele escolha entre opções pré-exis-
tentes, entre muitas outras atividades interativas. E as informações reco-
lhidas podem ser usadas para preencher uma planilha, por exemplo.
Neste capítulo você vai aprender a criar e configurar formulários,
bem como associar os campos e controles deles com planilhas.Tudo
isso, claro, com os recursos do nosso velho conhecido VBA.

• CRIANDO UM FORMULÁRIO

No editor do Visual Basic do Excel, acesse o comando Inser ir >


Inserir
UserForm.
UserForm

Você pode definir características como nome, cor, estilo de borda,


fonte de textos, entre outras, para o seu formulário. Para facilitar essas
configurações, ative a janela Propriedades com o comando Exibir >
Janela ‘Pr opr
‘Propr iedades’
opriedades’
iedades’, ou usando a tecla F4.

52 Treinamento avançado em Excel

cap_07.p65 52 17/6/2004, 10:40


• A BARRA DE FERRAMENTAS DE FORMULÁRIOS

Para que o usuário possa interagir com o formulário, você deve


incluir controles nele – isto é, botões, caixas de textos etc. A maneira
mais fácil de fazer isso é usar a opção Exibir > Caixa de ferramentas
ferramentas,
na qual basta clicar sobre o controle desejado para que ele passe a fazer
parte do formulário.

A tabela a seguir apresenta os controles que podem ser incluídos no


seu formulário:

Controle Nome Utilidade


Selecionar objetos Permite selecionar um ou mais
objetos dentro do formulário.
Rótulo Insere títulos e textos explicativos
dentro do formulário.
Caixa de texto Permite que o usuário insira da-
dos em um campo.
Caixa de combinação Utilizado para criar uma lista de
dados, permitindo a escolha de
um deles.

Criando um formulário no VBA 53

cap_07.p65 53 16/6/2004, 17:37


Caixa de listagem Semelhante à caixa de combinação,
mas com a diferença de que os
dados são exibidos em mais de uma
linha ao mesmo tempo.
Caixa de seleção Utilizado para criar uma opção
de seleção.
Botão de opção Utilizado para criar um botão que
seleciona uma determinada opção.
Botão de ativação Utilizado para criar um botão
que pode ser ativado ou não.
Moldura Utilizado para criar uma moldu-
ra em volta de um conjunto de
controles, agrupando-os.
Botão de comando Utilizado para criar um botão de
comando, como OK OK, Cancelar
Cancelar,
Salvar etc.
Faixa de tabulação Utilizado para apresentar um
conjunto de informações em fai-
xas separadas.
Multipágina Utilizado para apresentar várias
guias de dados, cada uma com
informações diferentes. Você
pode, por exemplo, visualizar os
dados pessoais de um cliente em
uma guia, e os dados comerciais
em outra.
Barra de rolagem Utilizado para criar uma barra
de rolagem no sentido horizon-
tal ou vertical.
Barra de rotação Utilizado para incrementar valo-
res em controles de textos
(como número de prestações, %
de juros etc.).
Imagem Utilizado para inserir imagens no
formulário. São aceitos formatos
como .jpg, .bmp, .ico, entre outros.
RefEdit Utilizado para exibir o endereço de
um intervalo de células inserido ou
selecionado em planilhas.

54 Treinamento avançado em Excel

cap_07.p65 54 16/6/2004, 17:37


• INSERINDO UM CONTROLE

Agora que você já conhece os controles que podem ser inseridos


em um formulário, veja como incluí-los:

1 Na Caixa de ferramentas
ferramentas, dê um clique sobre o controle desejado.

2 Na janela UserForm
UserForm, posicione o cursor sobre o ponto em que
deseja inseri-lo.

3 Clique e arraste o mouse sobre a tela para desenhar o controle.

Criando um formulário simples


A Caixa de ferramentas facilita muito o trabalho de inserção de
controles. Que tal colocar a mão na massa e partir para a criação de um
formulário simples? Tente criar um modelo como o apresentado na
figura a seguir:

Depois de construir o formulário, guarde-o.Vamos voltar a usá-lo


mais adiante.

Criando um formulário no VBA 55

cap_07.p65 55 16/6/2004, 17:37


• ALTERANDO O NOME DOS CONTROLES

Para capturar os dados que o usuário inserir nos controles do seu


formulário, é necessário nomear os controles. Do contrário, não será pos-
sível referir-se a eles mais tarde. O nome de um controle é definido por
sua propriedade NameName, como descrito nos passos a seguir:

1 Na janela UserForm
UserForm, dê um clique sobre o controle desejado.

2 Na janela Propriedades
Propriedades, dê um clique sobre a propriedade Name
Name.

3 Digite o nome que você quer dar ao controle.

Uma dica: para facilitar a identificação dos controles, é interessante


padronizar a nomenclatura. Um padrão muito utilizado é o de iniciar o
nome com três letras indicando qual o tipo de controle criado. Por exem-
plo,lblVeículo: nesse caso, as letras“lbl” indicam que o controle é do tipo
rótulo (em inglês, label); e o nome específico desse controle do tipo rótu-
lo está expresso logo em seguida (Veículo).

A propriedade Caption
Certos controles, como rótulo, botão de opção, caixa de texto, mol-
dura e botão de comando, possuem a propriedade CaptionCaption, a qual
permite acrescentar um texto de apresentação do controle. Suponha
que você tenha uma caixa de texto na qual o usuário deva digitar o
nome dele. Para que ele saiba o que deve fazer, é necessário que exista
um texto explicativo, como “Digite aqui o seu nome”. Esse texto é defini-
do na propriedade Caption
Caption.

• ALTERANDO OS CONTROLES DO FORMULÁRIO

Agora chegou a hora de retomar o formulário que você criou há


pouco.Você vai definir os nomes e os captions de alguns controles,
seguindo a orientação da tabela a seguir:

56 Treinamento avançado em Excel

cap_07.p65 56 16/6/2004, 17:37


Objeto Name Caption

label1 lblNome Nome:

Textbo x1
xtbox1 txtNome
Commandbutton1 cmdOk OK
Commandbutton2 cmdCancelar Cancelar

Label2 lblVeículo Veículo:

ListBox1 ltbVeículo

Frame1 frmPagamento Opções de pagamento

OptionButton1 optVista À vista

OptionButton2 optParcelado Financiado

label3 lblParcelas Nº de parcelas

TextBox2
xtBox2 txtParcelas
SpinButton1 spiParcelas
Label5 Preço:

CheckBox1 chkNovo Cliente novo

Label4 LBLPreço [em branco]

Inserindo uma imagem


Como fazer para incluir uma imagem em seu formulário? É simples.
Você já sabe que o controle correspondente é o Ima gem
Imagem. Aproveite o
passo-a-passo a seguir para definir a imagem que deve ser associada ao
controle Imagem que você já inseriu no seu formulário:

1 No formulário que você criou, dê um clique sobre o controle


de imagem.

Criando um formulário no VBA 57

cap_07.p65 57 16/6/2004, 17:37


2 Na janela Propriedades
Propriedades, vá até a propriedade Picture e clique no
botão com as reticências.

3 Será aberta uma janela de navegador, para que você escolha a ima-
gem a ser inserida. Procure o arquivo de imagem desejado e dê um
duplo clique sobre ele.

4 Para que a figura não apareça cortada, altere a propriedade


PictureSizeMode
PictureSizeMode
eSizeMode. Assim, a figura vai se adaptar ao tamanho da caixa.

Propriedades de texto
Depois de alterar as propriedades Name e Caption dos controles, o
seu formulário terá esta aparência (exceto pela figura, que será aquela
que você tiver selecionado):

Agora, você deve definir uma propriedade para o objeto do tipo caixa
de texto txtNome. Para permitir que o nome do cliente seja digitado em
mais de uma linha, defina a propriedade MultiLine como Trueue.Para isso,
basta dar um clique sobre o controle txtNome no seu formulário e alterar
a propriedade desejada na janela Propriedades
Propriedades.

Alterando a ordem dos controles


Com o formulário já construído, você pode navegar pelos controles
existentes usando a tecla Tab. Com ela, os objetos são selecionados de
acordo com a ordem em que foram criados. Mas é possível alterar essa
ordem, para, por exemplo, torná-la compatível com a das colunas de
uma planilha. Para isso, vá ao menu Exibir > Ordem de tabulação
tabulação.
Preparando
Preparando o
o ambiente
ambiente dos
dos dados
dados
Na janela que aparece, clique sobre o controle que deseja mudar
de posição e, depois, sobre os botões Mover para cima ou Mover
para baixo
baixo.

58 Treinamento avançado em Excel

cap_07.p65 58 16/6/2004, 17:37


Nosso intuito é relacionar o formulário que criamos com planilhas
do Excel. Só para ter uma idéia de como ele vai ficar sobre a planilha,
clique sobre o botão .
Depois, feche o formulário sobre a planilha para retornar ao edi-
tor do VBA.
Na planilha, vamos preparar o ambiente em que os dados se-
rão recebidos.

1 Construa a seguinte planilha:

2 Nomeie a planilha como Cadastro.

Preparando a tabela com os dados dos veículos


Em Plan2 devemos digitar a tabela com os veículos que temos
na revendedora:

1 Renomeie a planilha como Veículos.

2 Selecione o intervalo A2:C19 e nomeie-o como VEÍCULOS.

Associando a tabela de veículos com o controle

1 No Editor do Visual Basic, selecione o objeto lbtVeículos.

Criando um formulário no VBA 59

cap_07.p65 59 16/6/2004, 17:37


2 Esse controle deverá apresentar a tabela de produtos que está na
planilha Veículos.

3 Defina a propriedade Ro wSour


RowSour ce como Veículos (nome da área
wSource
nomeada).

4 Para que sejam apresentadas as duas colunas com o modelo e o


ano do veículo, altere a propriedade ColumnCount para 2.

5 Para exibir os títulos altere a propriedade ColumnHeads para True.

Exibindo o formulário
Agora que já fizemos a associação entre o formulário e a planilha,
vamos fazer com que a planilha adequada seja selecionada, e o formulá-
rio, exibido. Isso será feito digitando-se algumas linhas de código no
editor do VBA:

1 Na janela Projeto, ative a janela de código com este botão:

2 Digite o seguinte código:

Sub Cadastro()
Sheets(“Cadastro”).Select
‘Selecionar a planilha Cadastro.
frmVeículos.Show
‘Exibir o formulário com os veículos.
End Sub

3 Esse código vai posicionar o cursor sobre a planilha Cadastro


(Plan1) e abrir o formulário frmVeículos.

4 Execute a macro para ver o formulário no centro da tela.

60 Treinamento avançado em Excel

cap_07.p65 60 16/6/2004, 17:37


• EXIBINDO O PREÇO DO VEÍCULO

No formulário frmVeículos existe um controle com o nome lblPreço.


Ele vai servir para exibir o preço de determinado automóvel quando o
usuário selecioná-lo a partir da lista de veículos. Portanto, vamos adicionar
código ao controle ltbVeículo. Dê um duplo clique no controle
ltbVeículo, para ir à janela de código. Digite estas linhas:
Private Sub ltbVeículo_Click()
Me.lblPreço.Caption = Sheets(“Veículos”).
‘Ao ser selecionado um veículo da lista, no
‘formulário atual (Me), altere o caption no
‘controle lblPreço
Range(“c” & Me.ltbVeículos.ListIndex + _
2).Value
‘Acesse a coluna C da planilha Veículos,
‘adicionando 2 ao índice, pois o índice inicial
‘é zero. Coluna A + 2 = C.
‘Exibe o valor do veículo.
End Sub

Descarregando o formulário da memória


Quando o usuário clicar sobre o botão Cancelar
Cancelar, o formulário deve-
rá ser removido da memória, ou, em outras palavras, descarregado. Para
que isso aconteça, você deve associar um código a esse botão. Dê um
clique duplo sobre ele para abrir a janela de código. Nela, digite:

Private Sub cmdCancelar_Click()


‘Quando o botão Cancelar for pressionado,
‘o formulário deverá ser descarregado.
Unload Me
‘Descarrega o objeto atual (Me).
End Sub

Você deve ter reparado que não associamos comandos a todos os


controles do formulário. Isso porque controles como o botão de OK
OK, por
exemplo, exigem alguns conhecimentos que serão apresentados nos
próximos capítulos.Mas não desanime! Ao terminar o livro, você terá um
formulário totalmente funcional,e, o melhor,inteiramente feito por você.

Criando um formulário no VBA 61

cap_07.p65 61 16/6/2004, 17:37


Manipulando células
Manipulando células
Hora de mais diversão! Se,no capítulo anterior,você gostou de criar uma
planilha que interage com um formulário, certamente vai ficar ainda mais
feliz com o que as macros podem fazer pelo seu sistema de cadastro. Neste
capítulo, você vai fazer o cursor do Excel movimentar-se sozinho pela planilha,
enquanto os dados são coletados e manipulados – tudo automaticamente! Já
pode começar a se sentir um programador emVBA:basta seguir os passo-a-
passos e prestar atenção à sintaxe dos objetos e propriedades.

• MÉTODOS DE MANIPULAÇÃO DE CÉLULAS

Podemos deslocar o cursor de uma célula para outra simplesmente


usando o cursor ou o mouse, ou ainda a Caixa de nome. Mas, suponha que
você queira automatizar uma rotina que some os valores das células B2,
C4 e G5, por exemplo. Para isso, o cursor deverá deslocar-se entre essas
células e somar os seus valores. Usando alguns objetos e propriedades do
VBA, podemos facilmente criar uma macro que realize esse deslocamen-
to do cursor. De forma semelhante, você pode usar uma macro para
inserir fórmulas em células específicas.
O objetivo deste capítulo é que você se familiarize com o VBA.Portan-
to, você só vai voltar a usar o seu sistema de cadastro no final.

Verificando a área selecionada


Em primeiro lugar, você vai criar uma macro que indica qual é o
intervalo de células que está selecionado no momento.
Por enquanto, você não vai usar o sistema de cadastro. Portanto,
faça o seguinte:

1 Abra um novo documento no Excel e vá até o editor do VBA. Na


janela de código, digite:
Sub VerSeleção()
MsgBox ActiveWindow.RangeSelection.Address
`Na janela atual, área selecionada, endereço
End Sub

62 Treinamento avançado em Excel

cap_08.p65 62 16/6/2004, 17:36


2 Para fazer um teste, volte para a planilha, rode a macro VerSeleção,
e você verá uma caixa de mensagem como esta:

Inserindo fórmulas em uma célula


Suponha que você queira inserir uma fórmula na célula D6 de uma
planilha chamada Cadastro. Uma possibilidade interessante é usar o
Formula. O objeto Range define um
objeto Range e sua propriedade Formula
intervalo de células, e a propriedade Formula permite associar uma
fórmula a esse intervalo.
Vamos ver um exemplo de como utilizar Rang
Rangee e For
ormmula
ula:

1 Em um novo documento do Excel, ou no mesmo em que você inse-


riu a macro VerSeleção,vá até a janela de código do editor de VBA e digite:

Sub DigitarFormula()
Worksheets(“Cadastro”).Range(“D6”).Formula _
= “=SUM(D2:D5)”
End Sub

Esse código fará com que a fórmula =SUM(D2:D5) seja inserida na


célula D6.

• O MÉTODO SELECT E A PROPRIEDADE SELECTION

O método Select ativa planilhas e objetos. Já a propriedade Selection


retorna um objeto que representa a área selecionada na planilha ativa.
Quando utilizamos o gravador de macros, o método Select e a propri-
edade Selection são ativados automaticamente.Veja um exemplo:

Sub Selecionar()
Sheets(“Sheet1”).Select
Range(“A1”).Select
ActiveCell.FormulaR1C1 = “Name”

Manipulando células 63

cap_08.p65 63 16/6/2004, 17:36


Range(“B1”).Select
ActiveCell.FormulaR1C1 = “Address”
Range(“A1:B1”).Select
Selection.Font.Bold = True
End Sub
Outra maneira de realizar a mesma atividade efetuada por essa
macro é sempre utilizar o objeto Sheet1 e fazer várias atividades ao
mesmo tempo, sem a necessidade de indicar que o mesmo deve ser
selecionado. Isso pode ser feito com a seguinte macro:

Sub Labels()
With Worksheets(“Sheet1”)
.Range(“A1”) = “Name”
.Range(“B1”) = “Address”
.Range(“A1:B1”).Font.Bold = True
End With
End Sub

• EXEMPLOS DE UTILIZAÇÃO DO MÉTODO RANGE

O Rang
Range e é um dos métodos mais importantes na seleção de
células. Veja um exemplo de como utilizá-lo (dessa vez, sem mexer
na planilha que você criou anteriormente):

Sub VerRange()
Range(“A1”, “D1”).Select
Range(ActiveCell, “B6”).Select
Range(“B3:C8”).Select
Range(“B2:E4”).Name = “IntervaloDeTeste”
Range(“IntervaloDeTeste”).Select
Range(“B2”).Select
ActiveCell.Range(“B2”).Select
Range(“IntervaloDeTeste”).Range(“A1”).Select
End Sub

64 Treinamento avançado em Excel

cap_08.p65 64 16/6/2004, 17:36


Vamos ver o que faz cada linha do código:

Sub VerRange()
Range(“A1”, “D1”).Select

Range(ActiveCell, “B6”).Select

Range(“B3:C8”).Select

Manipulando células 65

cap_08.p65 65 16/6/2004, 17:36


Range(“B2:E4”).Name = “IntervaloDeTeste”
Range(“IntervaloDeTeste”).Select

Range(“B2”).Select

ActiveCell.Range(“B2”).Select

Range(“IntervaloDeTeste”).Range(“A1”).Select

End Sub

66 Treinamento avançado em Excel

cap_08.p65 66 16/6/2004, 17:36


Propriedade Offset
A propriedade Offset retorna um objeto Range
Range, que nada mais é do
que um intervalo deslocado a partir da célula atual. Sua sintaxe é:

Expressão.Offset(RowOffset, ColumnOffset)

Em que:
RowOffset – é o número de linhas – que pode ser um valor positi-
vo, negativo ou 0 (zero) – que o intervalo deve ser deslocado.Valores
positivos deslocam o intervalo para baixo, e os negativos, para cima. O
valor padrão é 0.
ColumnOf
ColumnOffsetfset – é o número de colunas – que pode ser um
valor positivo, negativo ou 0 (zero) – que o intervalo deve ser deslo-
cado. Valores positivos deslocam o intervalo para a direita, e os ne-
gativos, para a esquerda. O valor padrão é 0.

Veja um exemplo de utilização da propriedade Of fset


Offset
fset:

ActiveCell.Offset(10,7).Select

De acordo com essa linha de código, o intervalo será deslocado dez


linhas para baixo e sete colunas para a direita, a partir da célula ativa.

• ATRIBUINDO VALORES ÀS CÉLULAS DA PLANILHA

Agora chegou o momento de retomar o seu sistema de cadastro.


O objetivo do formulário que você criou é possibilitar que o usuá-
rio insira dados que serão passados para a planilha associada. É o
que vamos fazer agora. A primeira medida a tomar para que esse
procedimento dê certo é garantir que, no início da atividade da
macro, o cursor esteja sempre na primeira célula que deve receber
algum valor (no nosso caso, a célula A5 da planilha Cadastro). De-
pois, você deve deslocar o cursor ao longo da planilha, para que as
células recebam os valores dos campos do formulário. Para isso, siga
estes passos:

1 Abra a sua pasta de trabalho e vá até a planilha Cadastro. Nomeie a


célula A5 como ini.

Manipulando células 67

cap_08.p65 67 16/6/2004, 17:36


2 Dê um duplo clique no botão OK
OK.

3 No editor do VBA, abra a janela de código e digite a instrução:

Private Sub cmdOK_Click


Application.Goto reference:=”ini”
‘Posiciona o cursor no início da área de
‘cadastro.
ActiveCell.Value = Me.txtNome.Text
‘A célula atual recebe o valor do controle
‘txtNome.
ActiveCell.Offset(0,1).Activate
‘Desloca o intervalo uma célula para a direita.
ActiveCell.Value = Me.ltbVeículo.Value
‘A célula atual recebe o valor do controle
‘ltbVeículos.
ActiveCell.Offset(0,1).Activate
‘Desloca o intervalo uma célula para a direita.
ActiveCell.Value = Me.lblPreço.Caption
‘Recebe o conteúdo de lblPreço.
ActiveCell.Offset(0,1).Activate
‘Desloca o intervalo uma célula para a direita.
ActiveCell.Value = Me.optVista.Value
‘Armazena o valor de optVista.
ActiveCell.Offset(0,1).Activate
‘Desloca o intervalo uma célula para a direita.
ActiveCell.Value = Me.txtParcelas.Value
‘Armazena o valor de txtParcelas.
ActiveCell.Offset(0,1).Activate
‘Desloca o intervalo uma célula para a direita.
ActiveCell.Value = Me.chkNovo.Value
‘Armazena o valor de chkNovo.
ActiveCell.Offset(1,-5).Activate
‘Desloca o cursor uma linha para baixo.
‘e cinco colunas para a esquerda.
End Sub

Com esse código, você consegue fazer com que o cursor se desloque
pela planilha, de modo a inserir dados em células diferentes.Assim, cami-
nhamos mais um pouco em direção ao sistema de cadastro finalizado.

68 Treinamento avançado em Excel

cap_08.p65 68 16/6/2004, 17:36


Variáveis de memória
O que você comeu ontem no almoço? Não se lembra, hein?...
Talvez você não tenha reservado um espaço na sua memória para
guardar essa informação. Imagine que você o fizesse, e separasse
um canto da sua memória para a informação chamada “o que eu
comi ontem no almoço”. Hoje, o valor dessa informação poderia
ser “dobradinha”. Amanhã, o valor pode ser outro, como “frango
xadrez”. Bem, no caso de nossa humilde equipe, esse valor varia
conforme o cardápio do restaurante por quilo. Mas, independente-
mente do fator de variação do valor, o espaço na memória estará
garantido, o que facilita muito o trabalho com programação.
Neste capítulo, você verá como lidar com variáveis, que são ele-
mentos que recebem valores, os quais são armazenados no espaço
reservado na memória. Por enquanto, vamos deixar um pouco de
lado o formulário que você criou – mas isso não significa que ele
será esquecido.

• CONCEITO DE VARIÁVEIS DE MEMÓRIA

Uma variável é um valor que fica armazenado na memória do


computador enquanto o procedimento está rodando. Assim que o
procedimento termina, a variável é removida da memória – daí seu
nome ser var iáv
ariáv el de memór
iável ia
memória
ia.
As variáveis de memória no VBA armazenam valores de proprie-
dades e resultados de cálculos.

• REGRAS PARA NOMEAÇÃO EM VBA

Para nomear procedimentos, constantes, variáveis e argumentos


em qualquer módulo, obedeça sempre às seguintes regras:

• Não devem ser utilizados pontos, espaços, vírgulas, pontos de


exclamação ou símbolos ($, @, # etc.).

Variáveis de memória 69

cap_09.p65 69 16/6/2004, 17:36


• O nome deve iniciar com uma letra.
• O nome não deve exceder 255 caracteres.
• Não devem ser utilizadas palavras reservadas do sistema,
como, por exemplo, WorkSheet, que se refere a um objeto do
Microsoft Excel.

• COMO DEFINIR VARIÁVEIS

Para entender melhor como trabalham as variáveis, digite as se-


guintes linhas na janela de código do VBA:

Sub ArmazenaVariáveis()
MeuValor = 500
MeuTexto = “TEXTO”
MeuBooleano = True
MinhaData = #12/3/2001#
MinhaMoeda = 12.5
‘Atribuindo valores a variáveis
End Sub

Nesse exemplo, definimos cinco variáveis de tipos diferentes.


Para ver como elas são armazenadas na memória, observe a janela
Local
Local, que pode ser acessada com o comando Exibir > Janela >
Var iáv
ariáv eis locais:
iáveis

Logo ao acessar a janela Local


Local, você vai notar que ela ainda não perce-
beu a existência das variáveis atribuídas. Para que ela o faça, é necessário

70 Treinamento avançado em Excel

cap_09.p65 70 17/6/2004, 10:41


solicitar ao VBA que execute o script passo a passo, o que pode ser feito
pressionando a tecla F8. Depois de fazer isso, você verá que o Excel
consegue definir cada uma das variáveis, mas continua parado na primei-
ra linha do procedimento. Isso acontece porque as variáveis foram defini-
das, mas ainda não têm valores associados. Pressione F8 sucessivas vezes
para que todas as variáveis sejam vistas:

Quando o procedimento chega ao fim, as variáveis são zeradas, e o


módulo nem ao menos se lembra de que elas foram utilizadas. A janela
Var iáv
ariáv eis locais permite que você saiba qual valor está realmente ar-
iáveis
mazenado na memória naquele instante. Essa propriedade é muito útil
nos casos em que deparamos com um erro de cálculo e não sabemos o
que o Excel está tomando como base.
As variáveis podem armazenar valores e objetos. Para atribuir
um valor a uma variável, podemos digitar seu nome, o sinal de igual
e o valor que deve ser atribuído a ela:

Nomedavariável = valor

• DECLARANDO VARIÁVEIS

O VBA não exige que as variáveis sejam declaradas, mas o ideal é


fazê-lo sempre. Aliás, existe, no VBA, um recurso padrão para decla-
rar as variáveis automaticamente, por meio da instrução Option
Explicit
Explicit, que veremos mais adiante.

Variáveis de memória 71

cap_09.p65 71 16/6/2004, 17:36


Ao declarar uma variável, estamos solicitando ao VBA que reserve
um certo espaço na memória para armazenar o conteúdo dela. Existem
diversos tipos de variável (dependendo do tipo de valor que ela pode
receber, como caracteres, números, valores lógicos etc.). Especificando-
se o tipo da variável, minimiza-se o espaço de memória a ser reservado
para ela. A declaração de variáveis é feita de acordo com esta sintaxe:

Dim nomedavariável As tipodavariável

Em que:
Dim – é o termo proveniente de dimensionar, que, por sua vez,
significa alocar. O Dim faz com que uma determinada quantidade
de memória seja alocada para a variável.

Como dissemos no início do capítulo, você pode utilizar a ins-


trução Option Explicit (na seção de declarações, que fica no início
do procedimento) para que o VBA passe a exigir que todas as variá-
veis sejam declaradas. Uma vez incluída essa instrução, o VBA verifi-
ca o código na primeira vez em que o procedimento de um módulo
é executado, para assegurar que todas as variáveis tenham sido de-
claradas. Caso não encontre alguma das declarações, ele pára exata-
mente no ponto em que encontrou a variável não declarada, e
retorna um aviso a respeito.

• ESCOPO DAS VARIÁVEIS

O escopo de uma variável refere-se ao domínio dentro do qual


ela pode ser acessada. O VBA permite que a variável tenha um des-
tes níveis de escopo:

• Disponível somente no procedimento;


• Disponível somente no módulo;
• Disponível somente na pasta de trabalho;
• Disponível em todas as pastas de trabalho.

72 Treinamento avançado em Excel

cap_09.p65 72 16/6/2004, 17:36


Variáveis do nível de procedimento
Para declarar uma variável cujo escopo seja restrito ao procedi-
mento em que ela se encontra, utilize a instrução Dim
Dim. Assim, ela
ficará disponível somente nesse procedimento, e nenhum outro po-
derá acessá-la.

Sub DefineVariáveis()
Dim ctNome As String
Dim curSalário As Currency
Dim dtDataInício As Date
....
End Sub

Variáveis do nível de módulo


Para declarar uma variável de escopo restrito a um único módulo,
inclua-a na seção de declarações usando a palavra-chave Pr iv
Priv ate
ivate
ate:

Option Private Module


Private NomeLivro

No caso, poderíamos utilizar Dim no lugar de Pr iv


Priv ate na segun-
ivate
da linha do código, mas, para enfatizar as variáveis declaradas no
início do módulo, a instrução mais utilizada é a Pr iv
Priv ate
ivate
ate.

Variáveis de nível global


Para declarar uma variável disponível a todos os módulos exis-
tentes na pasta de trabalho, use a palavra-chave Public sem a instru-
Public
ção Option Pr iv
Private Module
ivate Module. O resultado será uma variável chama-
da Global
Global, que deverá ser declarada na seção de declarações:

Public strNomeLivro

• TIPOS DE VARIÁVEL
Os tipos de variável disponíveis no VB são:

Variáveis de memória 73

cap_09.p65 73 16/6/2004, 17:36


cap_09.p65

74 Treinamento avançado em Excel

mais espaço de memória do que os demais tipos.


tipo, o Excel automaticamente irá criar uma variável Var
tipo de dado. Se, na declaração de uma variável, não for especificado o
Tipo de dados Prefixo Exemplo Memória requerida Intervalo de dados

(*) Var
Boolean Bln BlnReady 2 bytes True ou false

ariant
iant é um tipo especial de variável, que pode conter qualquer
Currency Cur CurCusto 8 bytes 922.337.203.685.477,5808 a -
922.337.203.685.477,5808

Date Dt DtPgto 8 bytes 1 de janeiro de 100 a 31 de


74

dezembro de 9999

Double Db DbCont 8 bytes 1.797693134862232e308 a –


4.9406564584124e-324

Integer Int IntQtosFilhos 2 bytes -32.768 a 32.767

Long Lng LngVendas 4 bytes -2.147.483.648 a 2.147.483.648

Single Sng SngTaxaJuros 4 bytes - 3.402823E38 a –1.401298E-45


16/6/2004, 17:36

ariant

String Str StrPrimNome 10 bytes + comprimento Zero a aproximadamente


iant
iant,que requer

da string (texto) 2 bilhões de caracteres

Variant* Vnt VntResposta 16 bytes Byte

Byte Byt BytTecla 1 byte 0 0a a255


255
Estruturas de programação
Seus amigos o chamam para ir ao cinema em um dia cinzento.Você,
resfriado, responde:“Se não chover eu vou, mas, se chover, prefiro ficar
em casa...”. Pronto! Você acaba de usar uma estrutura de programação
condicional. Como você vê, não é necessário ser um daqueles gênios
dos filmes de ficção adolescente para compreender princípios de pro-
gramação. Fluxos de código são mera questão de lógica.Você só precisa
se familiarizar com a linguagem de programação e treinar um pouco.
Neste capítulo, você verá como criar rotinas de programação
que tomem diferentes decisões de acordo com a escolha do usuá-
rio, fazendo uso das estruturas de programação. No sistema de ca-
dastro que você está construindo, por exemplo, vamos fazer com
que o texto inserido na planilha varie conforme a opção que o usu-
ário tiver escolhido no formulário.

• ESTRUTURAS CONDICIONAIS

As estruturas condicionais criam situações em que o programa


deve decidir por qual caminho seguir, de acordo com o resultado
de um teste condicional.

As estruturas If
As estruturas do tipo If disponibilizam opções para avaliar a
entrada de dados do usuário, e executam afirmações em uma con-
dição básica como resposta. Embora tenhamos três variações da
estrutura If
If, todas elas são iniciadas com a declaração If ... Then e,
em geral, terminam com End If If.
Essa declaração avalia se uma condição é verdadeira ou falsa, e
direciona o fluxo do programa de acordo com o solicitado. Se mais
de uma condição na estrutura é verdadeira, somente o código espe-
cificado como primeira condição verdadeira será executado.

• If ...Then

Em geral, usa-se essa estrutura quando o programa possui uma


decisão do tipo “um ou outro”. Ela aceita dois tipos de sintaxe:

Estruturas de programação 75

cap_10.p65 75 16/6/2004, 17:35


If [condição] Then Claúsula

Repare que, nesse modelo, não usamos a instrução End If


If. Esse
tipo de declaração pode ser usado nos casos em que a estrutura If
se resumir a uma simples linha, como neste exemplo:

Sub PreencheDatas()
Dim MinhaData As String
MinhaData = InputBox(“Digite o mês no _
formato MMM-AA”)
If MinhaData <> “” Then MsgBox “Continuar _
a macro”
End Sub

If [condição] Then
Claúsula
End Sub

Nesse segundo tipo de sintaxe, a cláusula da estrutura não está


na mesma linha em que se encontra a palavra Then
Then. Ou seja, a estru-
tura se estende por mais de uma linha. Nesse caso, devemos fechá-
la com End IfIf, como no exemplo a seguir:

Sub Demonstra If()


If ActiveSheet.Name <> “EXEMPLO” Then
MsgBox “Você está na planilha errada!”
End If
End Sub

• Aplicando a estrutura If no formulário

Vamos, agora, aplicar o que aprendemos sobre If no sistema de


cadastro que você criou. No formulário de cadastro, é necessário
verificar o conteúdo de Opções de pa gamento para definir qual
pagamento
caminho o programa vai seguir: se o usuário selecionar a opção À
vista
vista, deverá ser inserida a palavra À vista na célula; caso contrário,
deverá ser inserida a palavra Financiado. Para fazer isso, siga este
passo-a-passo:

76 Treinamento avançado em Excel

cap_10.p65 76 16/6/2004, 17:35


1 Abra o arquivo com o sistema de cadastro. No editor do VBA, dê um
duplo clique sobre o botão cmdOK, para acessar seu código.

2 Agora você vai adicionar uma estrutura If para testar se a caixa de


opção optVista está ativada. Portanto, precisamos substituir, no código,
as linhas referentes ao controle optVista por novas instruções. Para
fazer isso, procure as seguintes linhas no código do botão cmdOK:

ActiveCell.Value = Me.optVista.Value
‘Desloca o intervalo uma célula para a direita.
‘Armazena o valor de optVista.

E substitua-as por estas:

If Me.optVista = True Then ‘verifica se optVista


‘está ativado
ActiveCell.Value = “À vista”
ActiveCell.Offset(0,1).Select
ActiveCell.Value = “0” ‘número de parcelas
‘é 0 txtParcelas.Enabled = False
Else
ActiveCell.Value = “Financiado”
ActiveCell.Offset(0,1).Select
ActiveCell.Value = Me.spiParcelas.Value
End If

3 Com essas linhas de código, se o usuário selecionar a opção


optVista, a célula correspondente na planilha será preenchida com
o valor “À vista”. Do contrário, será preenchida com o valor “Finan-
ciado”. Vamos, agora, inserir instruções para verificar se a caixa
chkNovo foi ativada. Ainda no código para o botão cmdOK, procu-
re estas linhas:

ActiveCell.Value = Me.chkNovo.Value
‘Desloca o intervalo uma célula para a direita.
‘Armazena o valor de chkNovo.

E substitua-as pelas seguintes:

Estruturas de programação 77

cap_10.p65 77 16/6/2004, 17:35


If Me.chkNovo.Value = True Then
ActiveCell.Value = “SIM”
Else
ActiveCell.Value = “NÃO”
End If

Essas linhas fazem com que, se o usuário for um cliente novo, a


célula correspondente na planilha seja preenchida com o valor SIM
e, se não for, ela seja preenchida com o valor NÃO.

A estrutura Case Select


Esta estrutura é ideal para testar um valor dentre vários possí-
veis. Sua sintaxe é:

Select Case [expressão]


Case [expressão 1]
Declaração
Case [expressão 2]
Declaração
... …
Case [else]
Declaração
End Select

A estrutura Case Select avalia o resultado da expressão uma


única vez, comparando-o, depois, com outros valores, para determi-
nar qual bloco de código será chamado.
Vamos utilizar Case Select para manipular os dados a respeito do
número de parcelas em nosso sistema de cadastro. Siga estes passos:

1 No código do botão cmdOK, procure esta linha:

ActiveCell.Value = Me.spiParcelas.Value

E, logo abaixo dela, acrescente estas:

Select Case txtParcelas


Case 1
MsgBox (“Somente 01 parcela.”)
Case 2

78 Treinamento avançado em Excel

cap_10.p65 78 16/6/2004, 17:35


MsgBox (“Tome cuidado... os juros vão _
aumentar.”)
Case 3
MsgBox (“Nossa, aqui não é Kazas do _
Norte!”)
Case 4
MsgBox (“Tá mal... agora agüenta!”)
End Select

Em uma estrutura Select Case


Case, somente uma das declarações
disponíveis será executada.

• ESTRUTURAS DE LOOPING

Diferentemente das estruturas condicionais, as de looping (ou


de repetição) permitem que uma mesma instrução seja executada
repetidas vezes. É possível estipular um número definido de vezes
que o programa deve rodar, ou atrelar esse valor a uma condição.

Estrutura Do ... Loop


Esta estrutura pode ser utilizada nos casos em que desejamos
repetir um mesmo bloco de instruções até que determinada condi-
ção seja satisfeita, ponto em que o código sai do loop e passa a
executar a próxima instrução.
Para sair de uma estrutura Do ... Loop deve-se utilizar a instrução
Exit Do
Do. O ideal é usá-la após a avaliação de alguma condição, como, por
exemplo, If ...Then
Then. Nesse caso, se a condição for verdadeira, o procedi-
mento passará para a instrução existente imediatamente após o loop.

Do
[bloco de instruções]
Loop condição

Veja um exemplo de estrutura Do ... Loop


Loop, que realiza o loop
três vezes consecutivas:

Sub TestandoDoLoop()
Dim Contador As Integer
‘Declara a variável Contador, que irá

Estruturas de programação 79

cap_10.p65 79 16/6/2004, 17:35


‘armazenar números inteiros.
Contador = 0
‘ Inicializa a variável Contador.
Do
‘ Inicia o loop
MsgBox “O contador está em: “ & Contador
Contador = Contador + 1
‘ Incrementa Contador.
If Contador = 3 Then
‘ Se a condição for True,
MsgBox “Contador foi ativado três vezes”
Exit Do
‘ sair da instrução Do.
End If
Loop Until Contador > 3
MsgBox “Saímos do loop agora.”
End Sub

Para visualizar o funcionamento desse procedimento, vá até a


primeira linha do código e pressione a tecla F8. Você verá que o
Excel lê e executa a linha de código, passando então para a linha
seguinte, e prosseguindo até o final do bloco de instruções.

Estrutura For ... Next


A estrutura For ... Ne
Nextxt faz com que um bloco de instruções rode
um número predefinido de vezes. Esse número é estabelecido logo na
primeira linha. A última linha deve conter apenas a palavra Ne xt
Next
xt. Entre
For ... Ne
essas duas instruções (F xt
Next
xt), insere-se o código a ser repetido.

For Condição
[bloco de instruções]
Next

No exemplo a seguir, criamos um contador (representado por


uma variável) para controlar o número de vezes que o bloco de
instruções deve ser executado. Confira:

80 Treinamento avançado em Excel

cap_10.p65 80 16/6/2004, 17:35


Sub DemonstraNext()
Dim Contador As Integer
‘Define a variável Contador como um número
‘inteiro.
ActiveSheet.Range(“A1”).Select
‘Posiciona o cursor em A1.
For Contador = 1 To 10
‘Executa a mesma instrução até que Contador
‘atinja o valor 10.
ActiveSheet.Range(“A” & Contador).Select
‘Seleciona a coluna A + Contador (cujo
‘valor inicial é 1).
ActiveCell.Value = Contador
‘Atribui o valor de Contador à célula A1.
Application.StatusBar = “Estamos na linha _
“ & Contador
‘Exibe na barra de status o texto
‘“Estamos na linha:” + o valor de Contador.
Next
‘Executa as mesmas instruções novamente.
MsgBox (“Fim do contador”)
‘Após executar o bloco 10 vezes, exibe a
‘mensagem “Fim do contador”.
End Sub

Nesse código, repare no seguinte:

• O loop começa com a palavra For or, seguida do nome da variável


Contador e do valor inicial para a mesma.
• Cada vez que o loop é processado, acrescenta-se uma unidade
à variável Contador e é exibido o resultado na barra de status.

Estrutura For Each … Next


Ao contrário da estrutura For ... Ne
Nextxt comum, a For EacEach
h ...
Ne xt não exige que se defina o número máximo de vezes que o
Next
loop deverá ser executado. Por isso, ela permite trabalhar com to-
dos os objetos existentes em uma coleção. Basta definir uma variá-
vel para representar o objeto desejado e sua respectiva coleção.

Estruturas de programação 81

cap_10.p65 81 16/6/2004, 17:35


For each Condição
[bloco de instruções]
Next
Veja um exemplo de utilização do For Each ... Ne
Each xt
Next
xt:
Sub DemonstraForEach()
Dim Plan As Object
‘Declara a variável Plan como tipo Objeto.
Workbooks.Add
‘Adiciona nova planilha.
Worksheets.Add
‘Adiciona uma nova guia.
For Each Plan in This Workbook.sheets
‘Para cada planilha existente na pasta,
Range(“A1”).Value = Plan.Name
‘a primeira célula irá conter o nome
‘da planilha.
Next
‘Muda de planilha.
End Sub

Outros exemplos de criação de loops


As estruturas de looping podem ser usadas para aplicar inúmeros
recursos aos seus programas.Veja um exemplo interessante:

Listando arquivos existentes


Vejamos agora como verificar a existência de determinado arquivo
.xls em um diretório, e exibir seu nome na primeira linha de uma planilha:

Sub ListaArqs()
Dim Linha As Integer
Dim Arquivo As String
‘Define as variáveis Linha e Arquivo.
Linha = 1
Arquivo = Dir(“*.xls”)
‘Atribui valores às variáveis.
Cells(Linha, 1) = Arquivo
‘Atribui o conteúdo da variável Arquivo à
‘célula (1,1).
Linha = Linha + 1
‘Acrescenta 1 ao contador de linhas.
Arquivo = Dir

82 Treinamento avançado em Excel

cap_10.p65 82 16/6/2004, 17:35


‘Atribui o nome do arquivo (diretório) à
‘variável Arquivo.
Cells(Linha, 1) = Arquivo
‘A célula atual exibe o nome do arquivo
‘(conteúdo da variável).
End Sub

Usando estrutura Do ... Until


O código do exemplo anterior mostrava apenas um arquivo do
diretório (no caso, o primeiro de uma lista). Se você quisesse prolongar
esse mesmo código para que ele listasse todos os elementos de uma
lista contendo 200 arquivos, ele ficaria imenso, e o trabalho exigido seria
desumano. Para conseguir esse resultado de maneira inteligente e sem
suar a camisa, use a estrutura Do ... Until
Until, de modo que a execução do
bloco de instruções seja repetida até a aplicação não encontrar mais
nenhum arquivo .xls no diretório. Para isso, utilize este código:

Sub ListaArqs()
Dim Linha As Integer
Dim Arquivo As String
‘Declara a existência das variáveis Linha
‘e Arquivo.
Linha = 1
‘Atribui o valor 1 à variável Linha.
Arquivo = Dir(“*.xls”)
‘Armazena o nome do arquivo .xls na variável
‘Arquivo.
Do Until Arquivo = “”
‘Repete o bloco de instruções até que
‘a variável Arquivo esteja em branco.
Cells(Linha, 1) = Arquivo
‘Atribui à célula atual o conteúdo da
‘variável Arquivo.
Linha = Linha + 1
‘Incrementa o contador de linhas (Linha)
‘em uma unidade.
Arquivo = Dir
‘Armazena o conteúdo de Dir (diretório)
‘na variável Arquivo.
Loop
‘Caso encontre outros arquivos, repete o
‘bloco de instruções.
End Sub

Estruturas de programação 83

cap_10.p65 83 16/6/2004, 17:35


Criando funções
O Excel tem mais de 400 funções. É função a rodo! A maioria
dos usuários conhece apenas uma parte delas, já que algumas aten-
dem a necessidades muito específicas, de interesse para poucas
pessoas. Mas, mesmo dispondo dessa enorme quantidade de fun-
ções, você pode querer ou precisar de alguma que não conste da
lista. O que fazer? É simples: crie a sua própria função!
Veja, neste capítulo, como desenvolver o código para uma fun-
ção de cálculo de financiamento simples. Uma vez criada, ela pode-
rá ser usada quantas vezes você quiser, exatamente como qualquer
função nativa do Excel.

• CRIANDO FUNÇÕES

Até aqui, você trabalhou com a instrução Sub


Sub, com a qual desen-
volveu suas macros. Para criar funções, vamos começar a usar a ins-
trução Function
Function. As funções criadas ficam armazenadas na lista de
funções do Excel, juntamente com as demais, como SOMA, MÉDIA,
DATA etc.. Elas modificam apenas valores nas planilhas, nunca sua
estrutura ou características.

Para criar uma função, devemos utilizar a seguinte sintaxe:

Function NOME(Argumento1 As Tipo, Argumento 2 As Tipo, ...)


As Tipo
instruções
Nome = resultado
End Function

Experimente criar a sua própria função, de acordo com a orien-


tação a seguir:

1 No editor do VBA, crie um novo módulo usando o comando


Inser ir > Módulo
Inserir Módulo.

2 Digite estas linhas de código para criar a função FACADA:

84 Treinamento avançado em Excel

cap_11.p65 84 16/6/2004, 17:34


Function FACADA (Empréstimo As Currency,_
Juros As Single, Parcelas as Integer) As _
Currency
‘Esta função precisa de três argumentos:
‘Empréstimo – do tipo Currency (moeda),
‘Juros – do tipo simples e
‘Parcelas – do tipo inteiro
FACADA = Empréstimo * (1 + Juros) ^ Parcelas
‘Ao entrar com os valores de empréstimo,
‘vai calcular o valor dos juros elevado ao
‘número de parcelas.
‘Todas as instruções serão armazenadas na
‘função conhecida como FACADA.
End Function

Vamos, agora, testar a função criada:

1 No Excel, construa a seguinte planilha:

2 Clique sobre o botão Inser ir função


Inserir função. Na janela que se abrir, no
campo Ou selecione uma categ or
categor ia
ia, escolha a opção Todas
oria odas:

Criando funções 85

cap_11.p65 85 16/6/2004, 17:34


3 A função que você criou (FACADA) vai estar listada no menu.

4 Procure-a e dê um clique sobre ela. Depois, preencha os cam-


pos requeridos com os intervalos de células adequados, como mos-
tra a figura a seguir:

Dê OK para ver o resultado.

86 Treinamento avançado em Excel

cap_11.p65 86 16/6/2004, 17:34


Personalizando o sistema
O Excel possui algumas barras de ferramentas e uma barra de
menus padrão para agilizar o trabalho. Mas você também pode cri-
ar suas próprias barras e menus, reunindo nela as funcionalidades
que costuma usar com mais freqüência. E mais: é possível criar no-
vos botões para as macros que você porventura tenha desenvolvi-
do no Excel. É como brincar com um jogo de montar, cujo resulta-
do seja um ambiente de trabalho personalizado.
Neste capítulo, você verá como criar e manipular barras de fer-
ramentas e menus tanto por meio de linhas de código quanto por
meio de comandos.

• ROTINA DE LIMPEZA DOS DADOS PARA NOVO


CADASTRAMENTO

Nos capítulos anteriores, você associou ações aos controles do seu


sistema de cadastro. Assim, o usuário pode entrar no formulário e inse-
rir os dados, os quais serão usados para preencher as planilhas corres-
pondentes. O que falta, portanto, é um método que permita que, quan-
do o usuário terminar de efetuar o cadastro, o sistema possa ser zerado.
Isto é, temos de criar uma rotina que limpe todos os campos, de forma
que, ao se reiniciar o sistema de cadastro, eles apareçam em branco
para a digitação de novos dados. É muito simples fazer isso:

1 Abra o documento do sistema de cadastro.

2 No editor do VBA, dê um duplo clique no botão cmdOK.

3 Na janela de código, logo acima da instrução End Sub


Sub, digite o
seguinte bloco de instruções:

Me.txtNome = “”
Me.txtParcelas = “”
Me.ltBVeículo.ListIndex = -1
Me.optVista = False
Me.lblPreço = “”

Personalizando o sistema 87

cap_12.p65 87 16/6/2004, 17:31


Me.lblVeículo = “”
Me.chkNovo = False
Me.txtNome = SetFocus

• CRIANDO UMA BARRA DE FERRAMENTAS

Qualquer aplicativo do Windows pode conter várias barras de


ferramentas; você pode, inclusive, criar uma, utilizando comandos
ou por meio de códigos. Criar uma nova barra de ferramentas utili-
zando comandos é muito simples:

1 Em um novo documento do Excel, vá ao menu Fer errramentas >


Per sonalizar ou Exibir > Bar
ersonalizar errramentas > Per
Barrras de ffer
er sonalizar
ersonalizar
sonalizar.
2 Clique na guia Bar
Barrr as de ffer
er
errr amentas
amentas, e em seguida, em No
Novva

3 Na caixa Nome da bar


barrr a de ffer
er
errramentas
amentas, nomeie a sua barra
como CADASTRO DE VEÍCULOS e clique em OK OK:

4 Clique na guia Comandos


Comandos.

5 Selecione uma opção na caixa Categ or


Categor ias
orias
ias. Repare que uma pe-
quena barra de ferramentas vazia aparecerá ao lado da janela que
você está usando. Essa é a sua nova barra de ferramentas.

6 A partir da caixa Comandos


Comandos, arraste o comando desejado para
a barra de ferramentas que você criou:

88 Treinamento avançado em Excel

cap_12.p65 88 16/6/2004, 17:31


7 Se houver necessidade de alterar o texto ou a figura do botão,
basta pressionar o botão Modificar seleção
Modificar seleção.

8 Após arrastar todos os comandos desejados para a barra, clique


em Fechar
echar
har.

Criando uma barra de menus internos


Em vez de criar uma barra de comandos com botões, você pode
construir uma barra de menus contendo diversos comandos. Mas
lembre-se: é aconselhável manter em uso apenas a barra de menus
padrão do Excel (conhecida como barra de menus da planilha). De
qualquer modo, se sentir necessidade de uma barra personalizada,
basta seguir estes passos:

1 Vá ao menu Fer errramentas > Per sonalizar


sonalizar, e clique na guia Bar-
ersonalizar
ra de ffer
er
errramentas
amentas.
2 Clique no botão No
Novva e nomeie a nova barra de ferramentas. Clique
na guia Comandos e, na caixa Categ or
Categor ias
ias, selecione Men
orias us inter
Menus nos
internos
nos.

3 A partir da caixa Comandos


Comandos, arraste o menu desejado para a
barra de ferramentas exibida.

4 Depois de adicionar todos os botões e menus desejados, clique


em Fechar
echar
har.

• ANEXANDO UMA BARRA DE FERRAMENTAS


AO ARQUIVO

1 Abra a pasta de trabalho à qual deseja anexar uma barra


de ferramentas.

2 Vá ao menu Fer errramentas > Per sonalizar


sonalizar, e clique na guia Bar-
ersonalizar
ras de ffer
er
errramentas
amentas. Em seguida, clique em Ane xar
Anexar
xar.

3 Clique na barra de ferramentas que deseja anexar ao arquivo e


clique em Copiar
Copiar.
Obs.: Certifique-se de salvar a pasta de trabalho depois de ane-
xar uma barra de ferramentas.

Personalizando o sistema 89

cap_12.p65 89 16/6/2004, 17:31


• ANEXANDO MACROS A BOTÕES

Uma possibilidade interessante é a de acrescentar botões perso-


nalizados à sua barra de tarefas. Você pode, por exemplo, anexar
uma macro a um botão personalizado. Veja como fazer isso:

1 Com a sua barra de ferramentas personalizada aberta, vá até o


menu Fer
errramentas > Per sonalizar
ersonalizar
sonalizar.

2 Dê um clique na guia Comandos


Comandos.

3 Na caixa Categor
Categor ias
ias, selecione Macr
orias os
Macros
os.

4 Clique em Per sonalizar botão e arraste-o para sua barra.


ersonalizar

5 Para atribuir uma macro ao botão, pressione Modif icar seleção


Modificar seleção.

6 Clique sobre o nome da macro desejada, e, depois, em Atr ibuir


Atribuir
ibuir.

• UTILIZANDO CÓDIGOS PARA ATIVAR A BARRA


DE FERRAMENTAS

Agora vamos criar uma rotina que ative a barra de ferramentas


personalizada. Esse código deve ser associado ao procedimento
Open do objeto Wor kbook
orkbook
kbook, para que possa agir assim que o arqui-
vo for aberto. Para isso, siga este passo-a-passo:

1 Na janela de P rro ojeto


o, dê um duplo clique em
asta_de_T
asta_de_Trra balho
EstaPasta_de_T
EstaP balho.

2 Depois, clique sobre a caixa Objeto (que deve estar mostrando


a opção (Geral)
al)) e selecione a opção Wor
(Geral) kbook
orkbook
kbook.

90 Treinamento avançado em Excel

cap_12.p65 90 16/6/2004, 17:31


3 Digite as seguintes instruções:
Private Sub Workbook_Open()

MsgBox “Bom dia; este é o sistema de _


cadastro de vendas.”
‘Mensagem de abertura
Application.CommandBars(“CADASTRO DE _
VEÍCULOS”).Visible = True
‘Abrir barra de ferramentas caso esteja
‘fechada.
End Sub

Essas instruções serão executadas toda vez que o arquivo de


formulário for aberto, exibindo uma mensagem ao usuário e tor-
nando visível a barra de ferramentas criada.

• OCULTANDO A BARRA DE FERRAMENTAS

Se você quiser deixar de visualizar alguma barra de ferramentas,


basta ocultá-la. Isso pode ser feito por meio do comando Fer errramen-
tas > Per sonalizar
ersonalizar
sonalizar, ou de linhas de código, desde que você saiba o
nome da barra em questão. Veja um exemplo de como desabilitar
uma barra de ferramentas usando código, o qual deverá ser digitado
no procedimento Close
Close, ou seja, ao fechar a pasta de trabalho:

1 Vá até a janela de código. Se ela não estiver com o objeto


Wor kbook ativado, acesse-o na caixa Objeto
orkbook Objeto.

2 Logo acima da instrução End Sub


Sub, digite:

Application.CommandBars(“Standard”).Visible = _
False
Application.CommandBars(“Formatting”).Visible = _
False
‘Ocultar as barras de ferramentas Padrão e
‘Formatação.

Personalizando o sistema 91

cap_12.p65 91 16/6/2004, 17:31


• ALTERANDO A POSIÇÃO DE UMA BARRA
DE FERRAMENTAS

Veja agora como mudar a posição de uma barra de ferramentas na


tela. No exemplo a seguir, vamos posicionar a barra personalizada CA-
DASTRO DE VEÍCULOS na parte direita da área de trabalho do Excel:

1 Novamente no código do objeto Workbook


orkbook
kbook, logo acima da ins-
trução End Sub
Sub, digite:

Sub MudaBarra()
Application.CommandBars(“CADASTRO DE _
VEÍCULOS”). Visible = True
‘Torna visível a barra de ferramentas CADASTRO
‘DE VEÍCULOS.
Application.CommandBars(“CADASTRO DE _
VEÍCULOS”). Position = msoBarRight
‘Posiciona a barra de ferramentas do lado
‘direito da janela.
End Sub

Você também pode posicionar a barra de ferramentas em ou-


tros pontos da tela; basta alterar o valor do parâmetro Position, como
mostra a tabela abaixo:
Position = msoBarLeft Posiciona a barra à esquerda.

Position = msoBarRight Posiciona a barra à direita.

Position = msoBarTop Posiciona a barra no topo.

Position = msoBarFloating Torna a barra flutuante.

Para barras flutuantes, devemos estipular suas margens e sua


largura a partir das bordas esquerda e superior da janela. Veja, a
seguir, um exemplo de instrução para definir as características de
uma barra flutuante:

.left = 500, .top = 200, .width = 100

92 Treinamento avançado em Excel

cap_12.p65 92 16/6/2004, 17:31


• DESABILITANDO UM ITEM DA BARRA

Assim como podemos desabilitar uma barra de ferramentas, tam-


bém é possível desabilitar apenas um ou mais itens de uma barra.
Suponha que, no caso do seu sistema de cadastro, por exemplo, o
usuário ainda não tenha inserido dados no formulário. Nesse mo-
mento, seria interessante desabilitar o botão de impressão, uma vez
que ainda não existe nada para imprimir.
A seguir, veja um exemplo em que ocultamos o segundo botão
da barra personalizada CADASTRO DE VEÍCULOS:

1 Na janela de código, logo acima da instrução End Sub


Sub, digite:

Sub Oculta2()
Application.CommandBars(“CADASTRO DE _
VEÍCULOS”). Controls(2).Enabled = False
‘Oculta o botão 2 da barra de ferramentas.
End Sub

• INICIALIZANDO O SISTEMA

É possível fazer com que, toda vez que você iniciar um arquivo,
suas barras de menus e de ferramentas sejam visualizadas. Para isso,
basta associar ao objeto Wor kbook
kbook, no procedimento Open
orkbook Open, o se-
guinte código:

Application.CommandBars(“CADASTRO DE VEÍCULOS”). _
Visible = True
‘Torna a barra de ferramentas CADASTRO DE VEÍCULOS
‘ativa.
MsgBox “Bom trabalho!”
‘Exibe a mensagem “Bom Trabalho!”.
frmVeículos.Show
‘Exibe o formulário frmVeículos.

Personalizando o sistema 93

cap_12.p65 93 16/6/2004, 17:31


• FINALIZANDO SEU SISTEMA DE CADASTRO
Chegou a hora de aplicar os toques finais no seu sistema de
cadastro.Temos de resolver apenas duas coisas:
– Garantir que, assim que um cadastro seja finalizado, o cursor
se mova para a primeira célula da linha seguinte;
– Ativar o botão de rotação associado ao número de parcelas
(spiParcelas).
Mãos à obra!

Posicionando o cursor no primeiro registro em branco


Até aqui, quando o usuário clicava sobre o botão OK do formu-
lário, o cursor era transportado à célula nomeada como ini (no caso,
a célula A5). Ou seja, cada novo cadastro sobrescrevia o anterior.
Para que, em vez disso, o cursor seja posicionado na primeira célula
em branco do sistema, faça o seguinte:

1 Na janela de código,localize o comando associado ao botão cmdOK.

2 Procure a seguinte linha de código (que está logo abaixo da


instrução Sub cmdOK
cmdOK):

Application.Goto reference:=”ini”

3 Substitua essa linha pelo seguinte código:

Range(“A1”).Select
‘Posiciona o cursor em A1.
Selection.End(xlDown).Select
‘Posiciona o cursor na primeira célula em branco
‘após A1.
Selection.End(xlDown).Select
‘Posiciona o cursor na primeira célula em branco
‘na área de dados.
ActiveCell.Offset(1, 0).Range(“A1”).Select
‘Move o cursor uma linha para baixo da atual.

94 Treinamento avançado em Excel

cap_12.p65 94 16/6/2004, 17:31


Ativando o controle spiParcelas
Para exibir o valor das parcelas toda vez que o usuário clicar
sobre o botão spiParcelas, siga estes passos:

1 Na janela de código, localize o controle spiParcelas.

2 Logo acima da instrução End Sub


Sub, digite este código:

Private Sub spiParcelas_Change()


txtParcelas.Text = Me.spiParcelas.Value
End Sub

A obra completa
Parabéns! Você criou um sistema de cadastro de clientes funcio-
nal e associado a planilhas. Para que você possa ter uma visão geral
do seu programa, mostramos a seguir como deve ser o seu código
completo. Para facilitar a visualização, removemos as linhas de co-
mentário. Confira:

Private Sub cmdOK_Click()


Range(“A1:F1”).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range(“A1”).Select
ActiveCell.Value = Me.txtNome.Text
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = Me.ltBVeículo.Value
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = Me.lblPreço.Caption
ActiveCell.Offset(0, 1).Activate
If Me.optVista = True Then
ActiveCell.Value = “À vista”
ActiveCell.Offset(0, 1).Select
Me.spiParcelas.Value = “0”
txtParcelas.Enabled = False
Else
ActiveCell.Value = “Financiado”
ActiveCell.Offset(0, 1).Select

Personalizando o sistema 95

cap_12.p65 95 16/6/2004, 17:31


ActiveCell.Value = Me.spiParcelas.Value
Select Case txtParcelas
Case 1
MsgBox(“Somente 1 parcela”)
Case 2
MsgBox(“Tome cuidado ... os _
juros vão aumentar.”)
Case 3
MsgBox(“nossa, aqui não é Kazas _
do Norte !”)
Case 4
MsgBox(“Tá mal ... agora _
aguenta!”)
End Select
End If
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = Me.txtParcelas.Value
If Me.chkNovo.Value = True Then
ActiveCell.Value = “Sim”
Else
ActiveCell.Value = “Não”
End If

ActiveCell.Offset(1, -5).Activate

Me.txtNome = “”
Me.txtParcelas = “”
Me.ltBVeículo.ListIndex = -1
Me.optVista = False
Me.lblPreço = “”
Me.lblVeículo = “”
Me.chkNovo = False
Me.txtNome = SetFocus

End Sub

Nada mau, hein? E isso é só o começo. Com os conceitos apre-


sentados neste livro, você já tem subsídios para criar muitas outras
aplicações em VBA – e para tornar-se um verdadeiro craque em
Excel. Até a próxima!

96 Treinamento avançado em Excel

cap_12.p65 96 16/6/2004, 17:31