Vous êtes sur la page 1sur 98

by Diger erati 2004 by Digerati Books Todos os direitos reservados e protegidos pela Lei 5.988 de 14/12/1973.

. Nenhuma parte deste livro, sem autorizao prvia por escrito da editora, poder ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrnicos, mecnicos, fotogrficos, gravao ou quaisquer outros. Diretor Editorial Diretor Editorial Luis Matos Editora-assistente Editora-assistente Monalisa Neves Redatora Redatora Sandra Rita Pinto Prepar eparao Reviso Preparao e Reviso Beatriz Utsumi Projeto Grfico Capa e Projeto Grfico Daniele Oliveira Arte Arte Patricia Fernandez Ferrari Suporte Suporte Tcnico e Atendimento ao Leitor suporte@digerati.com.br (11) 3217-2626

Treinamento Avanado em Excel


Diger Comunicao erati ecnologia Digerati Comunicao e Tecnologia Ltda. Rua Haddock Lobo, 347 12 Andar CEP 01414-001 So Paulo/SP (11) 3217-2600 Fax (11)3217-2617 www.digerati.com Diretor etores Diretores 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

Prefcio
Voc faz uma vez e o Excel faz o resto por voc. Era com esse bordo que eu iniciava minhas explicaes sobre o Microsoft Excel durante as aulas que ministrava. Passados alguns anos, continuo certo de que no existe no mercado nenhuma ferramenta de produtividade incluindo as made in Microsoft to completa quanto o Excel. Com ele, voc precisa apenas gastar algumas horas projetando os clculos e estruturando as informaes, para que depois o software faa tudo automaticamente, mediante um simples comando. At parece mgica... O Treinamento Avanado em Excel integra uma lista de ttulos lanados 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: alm de abordar os novos recursos do Excel 2003 e a criao de funes, aborda, em profundidade, a criao de macros no Excel. As macros permitem gravar seqncias de procedimentos, de modo que voc possa executar uma srie de aes repetidas vezes, no momento em que desejar. Por isso, elas so responsveis pela automatizao da maior parte das atividades de quem lida com dados e clculos. 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 prximas pginas. Aproveite para familiarizar-se com ele, para, em pouco tempo, poder colocar o Excel nopiloto automtico, guardando seu tempo livre para coisas mais interessantes...

Luis Matos luismatos@digerati.com.br Diretor Editorial

ndice
CAPTULO 01 Algumas novidades na verso XP .......................... 09 Localizando planilhas ................................... 09 Exibindo detalhes ......................................... 10 Cabealhos e rodaps................................... 11 Diagramas ..................................................... 12 Inserindo novas caixas ........................... 13 Formatando as caixas do seu diagrama .. 13 Alterando o layout .................................. 14 Alinhamento de clulas ................................ 14 Boto AutoSoma ........................................... 15 Desenhando bordas ...................................... 15 A rea de transferncia ................................. 16 CAPTULO 02 Funes ............................................................... 17 Disponibilizando funes....................... 17 Funes de texto .......................................... 18 Funo PROCURAR ................................ 18 Funo LOCALIZAR ............................... 19 Funes ESQUERDA e LOCALIZAR ........ 19 Funes matemticas ................................... 19 Funo SUBTOTAL ................................. 19 Funes estatsticas ...................................... 21 Funo FREQNCIA ............................ 21 Funes de data e hora ................................ 23 Funo DATADIF .................................... 23 Funes de informaes .............................. 24

Juntando mais de uma categoria de funes ...... 24 Funo PROCV ....................................... 24 CAPTULO 03 Gerando grficos automticos ............................... 28 Procurando dados especficos ............... 29 Criando o grfico.......................................... 30 CAPTULO 04 Noes de macro .................................................. 33 Macro para classificar dados em uma planilha .. 33 Formas de executar uma macro ................... 35 Teclas de atalho ...................................... 35 Comandos .............................................. 35 Criando botes na planilha .................... 36 Macro para encontrar subtotais.................... 36 Macros de endereos absolutos / relativos ... 37 Macros com endereos absolutos .......... 38 Editando a macro ................................... 38 Macros com endereos relativos ............ 39 Entendendo o cdigo ............................. 40 CAPTULO 05 O editor do Visual Basic no Excel .......................... 41 A janela do editor do Visual Basic ................. 41 Mdulos ................................................. 43 Objetos ................................................... 43 Eventos da planilha ................................ 44

CAPTULO 06 Exibindo mensagens ao usurio ............................ 47 Funo MSGBOX .......................................... 47 Outros exemplos de mensagem ................... 48 Capturando respostas do usurio ................. 49 Funo INPUTBOX ................................ 50 Adicionando comentrios ao cdigo ............ 51 CAPTULO 07 Criando um formulrio no VBA ............................. 52 Criando um formulrio ................................. 52 A barra de ferramentas do formulrio .......... 53 Inserindo um controle ................................. 55 Criando um formulrio simples ............. 55 Alterando o nome dos controles .................. 56 A propriedade Caption ........................... 56 Alterando os controles do formulrio .......... 56 Inserindo uma imagem .......................... 57 Alterando a ordem dos controles ........... 58 Preparando o ambiente dos dados ......... 58 Preparando a tabela de veculos ........ 59 Associando Veculos com o controle ... 59 Exibindo o formulrio ............................ 60 Exibindo o preo do veculo ........................ 61 Descarregando o formulrio da memria 61

CAPTULO 08 Manipulando clulas ............................................. 62 Mtodos de manipulao de clulas............. 62 Verificando a rea selecionada ............... 62 Inserindo frmulas em uma clula ......... 63 O mtodo Select e a propriedade Selection .. 63 Exemplos de utilizao do mtodo Range ... 63 Propriedade Offset ................................. 67 Atribuindo valores s clulas da planilha ..... 67 CAPTULO 09 Variveis de memria ............................................ 69 Conceito de variveis de memria ............... 69 Regras para nomeao em VBA .................... 69 Como definir variveis ................................. 70 Declarando variveis .................................... 71 Escopo das variveis ..................................... 72 Variveis do nvel do procedimento ....... 73 Varivel do nvel de mdulo ................... 73 Variveis de nvel global ......................... 73 Tipos de varivel .......................................... 73 CAPTULO 10 Estruturas de programao.................................... 75

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 criao de loops .... 82 Listando arquivos existentes .................. 82 Usando estrutura Do ... Until .................. 83 CAPTULO 11 Criando funes .................................................... 84 CAPTULO 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 botes .......................... 90 Cdigos para ativar a barra de ferramentas .. 90 Ocultando a barra de ferramentas ................ 91 Posio 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

Algumas novidades na verso XP Algumas novidades na verso XP


Tem novidade no Excel XP? Tem, sim, senhor! A quinta verso do mais enigmtico dos aplicativos do Office traz aqueles pequenograndes aperfeioamentos de praxe. Conhea, neste captulo, as inovaes relacionadas localizao de planilhas, cabealhos e rodaps e diagramas. No se esquea, claro, da estria dos novos botes de Bordas. AutoSoma e Bordas

LOCALIZANDO PLANILHAS
Muitas vezes geramos arquivos que depois de algum tempo no lembramos onde guardamos. Para resolver esse problema, podemos solicitar ao Excel que faa uma pesquisa em nosso computador. Como? Veja nos passos a seguir: 1 Clique no menu Arquivo > Pesquisar esquisar. Arquiv quivo Pesquisar Aparecer uma caixa de dilogo do lado direito da tela. Preencha-a da seguinte forma:

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

Algumas novidades na verso XP 9

Os resultados devem ser: Nesta, que a ltima opo 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 boto Pesquisar. esquisar.

EXIBINDO DETALHES

10 Treinamento avanado em Excel

Em verses anteriores ao Windows XP para ocultar ou visualizar alguns , detalhes existentes na planilha, utilizvamos o menu Ferramentas > Opes, Opes habilitando ou desabilitando os itens desejados.A partir da verso XP, o processo tornou-se muito mais rpido e podemos utilizar o menu Exibir, Exibir que fornece as seguintes opes: Barra de frmulas; Painel de tarefas; Barra de status.

CABEALHOS E RODAPS
Nas verses anteriores do Excel, para inserir cabealhos era necessrio clicar em Exibir > Configurar > Cabealho/Rodap Configur igurar Cabealho/Rodap bealho/Rodap. Nessa guia era possvel selecionar um tipo de cabealho ou rodap entre os pr-definidos, ou incluir um novo, clicando no boto ersonalizar cabealho bealho. Personalizar cabealho A partir da verso XP, podemos agilizar essa tarefa no menu Exibir > Cabealho rodap odap, Cabealho e rodap e criar um novo cabealho por meio do mesmo boto Personalizar cabealho , o qual oferece algumas opes ersonalizar cabealho que j existiam nas verses anteriores, e outras que so novidades da verso XP: Formata os caracteres selecionados, alterando fonte, tamanho, cor e estilo dos mesmos. Insere o cdigo [&Pgina], o qual, no momento da impresso, substitudo pelo nmero da pgina atual. Insere o cdigo [&Pginas], o qual, no momento da impresso, substitudo pelo nmero total de pginas existentes na planilha. Insere o cdigo [&Data], o qual, no momento da impresso, substitudo pela data da impresso. Insere o cdigo [&Hora], o qual, no momento da impresso, substitudo pela hora da impresso.

Algumas novidades na verso XP 11

(*) Insere o cdigo &[Caminho]&[Arquivo], o qual, no momento da impresso, substitudo pelo caminho e nome da planilha atual. Insere o cdigo &[Arquivo], o qual, no momento da impresso, substitudo pelo nome do arquivo. Insere o cdigo &[Guia], o qual, no momento da impresso, substitudo pelo nome da guia da planilha atual. (*) Insere o cdigo &[Figura], o qual, no momento da impresso, substitudo por uma figura pr-selecionada. (*) Formata a figura selecionada, permitindo alterar sua largura e altura, ou mesmo recort-la. (*) Comandos incorporados a partir da verso 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 avanado em Excel

Inserindo novas caixas


Tambm possvel inserir novas caixas em seu diagrama. Para isso, faa o seguinte: 1 Clique na caixa que deseja reproduzir. 2 Em seguida, clique no boto Inser ir forma. Isso far com que a Inserir for 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 aparncia pessoal aos seus diagramas, a nova verso do Excel oferece opes especiais: 1 D um duplo clique sobre a caixa que deseja personalizar. 2 Aparecer a caixa de dilogo de formatao, na qual possvel fazer as seguintes alteraes:

Algumas novidades na verso XP 13

Fonte permite alterar tamanho, cor, estilo e efeitos da fonte, alm dela prpria. Alinhamento permite alterar o alinhamento do texto dentro da caixa. Cores Cores 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. Proteo (*) permite bloquear a caixa e o texto existente nela. Marg Margens 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, necessrio 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 boto Layout Layout. 3 Escolha um dos layouts existentes. Outra maneira de alterar o layout simplesmente clicar no boto mostrado na figura:

ALINHAMENTO DE CLULAS
Para alinhar rapidamente uma ou mais clulas, podemos utilizar os botes . A partir da verso XP, encontramos tambm algumas opes de Alinhamento. alinhamento no menu Formatar > Clulas > Alinhamento So elas: ormatar Horizontal Horizontal altera o alinhamento horizontal (da esquerda para a direita) do contedo de uma clula.

14 Treinamento avanado em Excel

Vertical altera o alinhamento vertical (de cima para baixo) do ertical contedo de uma clula. Controle de texto esta opo oferece trs possibilidades: Controle texto Retorno automtico de texto alinha o texto em mais de uma linha; Retorno texto Reduzir para ajustar reduz o tamanho da fonte para que todo para o contedo da clula seja apresentado dentro dela; Mesclar clulas alinha o texto em mais de uma clula ao mesMesclar mo tempo, recurso bastante utilizado para casos em que os ttulos esto na primeira linha. Orientao permite rotacionar o texto dentro da clula. Orientao Direo do texto permite alterar a ordem de leitura dos dados exisDireo texto tentes na clula, que pode ser da esquerda para a direita ou o contrrio.

BOTO AUTOSOMA
A partir da verso XP, podemos selecionar um conjunto de clulas com valores e ativar o boto AutoSoma . Para facilitar o trabalho, foram incorporadas as funes mais utilizadas na criao de frmulas, tais como SOMA, MDIA, CONTAR, MXIMO E MNIMO, entre outras.

DESENHANDO BORDAS
Nas verses anteriores do Excel, s era possvel criar bordas com linhas na cor preta e praticamente com a mesma espessura. Quem quisesse modificar esse padro tinha de utilizar o menu Formatar > Bordas das. Clulas > Bordas No Windows XP, alm das bordas convencionais, encontramos a opo Desenhar bordas Assim, podem-se criar bordas bordas das. com os seguintes passos: Algumas novidades na verso XP 15

bordas. 1 Ative o boto Desenhar bordas 2 Clique no boto Estilo da linha:

3 Clique no boto Cor da linha:

Aparecer um lpis indicando que deve ser riscada a clula na qual desejamos criar a linha:

A REA DE TRANSFERNCIA
Para colar um objeto utilizamos o boto , o qual insere na posio atual do cursor o contedo da rea de transferncia. Na verso XP foram incorporadas novas tarefas ao boto:

Frmulas cola a ltima frmula que foi copiada na planilha. alores Valores cola o valor da clula, ou seja, ignora a frmula e insere somente o resultado do clculo. Sem bordas cola a frmula na clula atual e ignora a borda formatada. Transpor cola as clulas em posio inversa. Suponha, por exemplo, que voc tenha selecionado vrias clulas que estejam dispostas em uma linha; na transposio, as mesmas clulas sero coladas, s que agora dispostas em colunas. Colar vnculo cola o vnculo do arquivo, ou seja, insere a frmula, bem como todo o caminho utilizado para a sua criao. 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 avanado em Excel

Funes
As funes so o centro nervoso do Excel. No, no se trata de recursos que causam chiliques a torto e a direito. Muito pelo contrrio: por meio das funes que conseguimos agilizar clculos e elaborar planilhas sofisticadas. E h funes para todo tipo de operao. Desde as somas mais simples at intrincadas frmulas estatsticas, esse o caminho das pedras! Neste captulo, trataremos de uma parte muito importante do Excel: as funes avanadas de texto, matemtica, estatstica 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 funes ao Excel por meio de suplementos; Localizar textos e cdigos em clulas; Trabalhar com duas ou mais funes em uma s; Efetuar outros clculos usando a funo SUBTOTAL; Efetuar clculos estatsticos com a funo FREQNCIA; Identificar as mensagens de erro apresentadas em funes. O Microsoft Excel possui cerca de 329 funes, divididas nas seguintes categorias: Financeiras Data e hora Matemtica e trigonomtrica Estatstica Procura e referncia Banco de dados Texto Lgica Informaes

Disponibilizando funes
Algumas funes podem no estar disponveis quando voc quiser us-las, sendo necessrio torn-las disponveis. Para isso, basta clicar em Suplementos. Ferramentas > Suplementos Surgir a seguinte tela: Funes 17

Habilite a caixa de seleo Ferramentas de anlise para que todas as funes fiquem disponveis. Para inserir funes, utilize o boto de Inserir funo . Confira, agora, algumas funes interessantes:

FUNES DE TEXTO Funo PROCURAR


Imagine que voc queira localizar uma determinada seqncia de caracteres existente em uma clula por exemplo, o cdigo de um produto que esteja na mesma clula em que est o nome do produto, como no exemplo a seguir:

Para isso, voc pode utilizar a funo PROCURAR, que possui a seguinte sintaxe: =PROCURAR(texto a localizar;clula com o texto;n inicial) Em que: Texto a localizar o texto que voc deseja localizar. Se o contedo a procurar for um nmero, basta digit-lo diretamente dentro dos parnteses, sem nenhuma formatao. Para procurar o valor R$ 2500,00, por exemplo, digite apenas 2500. Se o contedo no for numrico (por exemplo, o smbolo #), voc deve digit-lo entre aspas ().

18 Treinamento avanado em Excel

Clula com o texto o endereo da clula em que o smbolo, valor ou texto deve ser procurado. N o- inicial o parmetro no qual voc pode especificar a partir de qual caractere a pesquisa deve ser iniciada. possvel, por exemplo, procurar o smbolo # a partir da posio 20. Caso voc no especifique o nmero inicial, o Excel vai considerar que a pesquisa deve ser iniciada a partir do primeiro caractere (1). 1 No exemplo a seguir, o Excel vai localizar o smbolo # dentro do contedo da clula A2:

Funo LOCALIZAR
Outra funo que faz pesquisa de caracteres a LOCALIZAR. A diferena entre ela e a funo PROCURAR que a segunda faz distino entre maisculas e minsculas, enquanto a LOCALIZAR no faz:

Usando a funo ESQUERDA com a funo LOCALIZAR


A funo ESQUERDA retorna um nmero X de caracteres a partir de um determinado texto, da esquerda para a direita. O nmero de caracteres X voc quem especifica. Suponha que, na tabela da figura a seguir, voc queira retirar apenas a descrio dos produtos. A melhor maneira de fazer isso usar conjuntamente as funes ESQUERDA e LOCALIZAR:

FUNES MATEMTICAS Funo SUBTOTAL


Essa funo retorna um subtotal em um banco de dados, podendo executar a soma, a mdia, o mnimo e o mximo, entre outras operaes, em uma lista de dados. A sintaxe da funo SUBTOTAL a seguinte:

Funes 19

=SUBTOTAL (nmero da funo; clulas a calcular) Em que: Nmero da funo um nmero entre 1 e 11 que especifica qual funo deve ser usada para calcular o subtotal. No Excel, cada funo corresponde a um nmero, como mostra a tabela a seguir: Nmero da funo 1 2 3 4 5 6 7 8 9 10 11 Funo MDIA CONTA CONT.VALORES MX MN MULT DESVPAD DESVPADP SOMA VAR VARP

Veja um exemplo de utilizao da funo SUBTOTAL:

20 Treinamento avanado em Excel

FUNES ESTATSTICAS Funo FREQNCIA


Calcula a freqncia de determinados valores dentro de um intervalo de valores, retornando uma matriz. Imagine que voc tenha, por exemplo, uma representao de veculos, e queira saber o nmero de modelos, por cidade, que se encaixam em determinadas faixas de preo isto , a freqncia dessas faixas de preo entre os modelos de carros. Esse exemplo pode ser observado na tabela da figura a seguir:

Nessa tabela, as clulas B13:B16 trazem os valores das faixas de preo: 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 no aparecer diretamente nos valores das clulas, a faixa posterior no inclui o ltimo valor da faixa anterior por exemplo, a segunda faixa no 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 freqncia de cada uma dessas faixas de preo no Excel: 1 Defina as faixas de dados que deseja analisar. No nosso exemplo, elas foram criadas nas clulas B13:B16. 2 Selecione as clulas adjacentes coluna com as faixas de dados (C13:C17). 3 Clique sobre o boto Inserir funo . Ser aberta esta janela:

Funes 21

4 Selecione a funo FREQNCIA e d OK OK. 5 Na caixa de dilogo que aparecer, clique no boto com a seta vermelha ao lado do primeiro campo. Na planilha, selecione a rea que contm os dados a serem analisados (B2:E11):

6 Na janela que aparecer, clique no boto com a seta vermelha, no primeiro campo, para voltar tela de insero da funo FREQNCIA. Agora clique no boto com a seta vermelha ao lado do segundo campo. Na planilha, selecione as clulas que contm as faixas de dados que vo servir de base para o clculo (B13:B16). 7 Pressione as teclas Ctrl + Shift + Enter para que sejam inseridos os valores correspondentes a cada uma das faixas. No use a tecla Enter sozinha, ou o resultado ser inserido somente na primeira clula:

22 Treinamento avanado em Excel

FUNES DE DATA E HORA Funo DATADIF


Para calcular a diferena entre duas datas, levando em conta o nmero de dias, meses ou anos, use a funo DATADIF, que possui a seguinte sintaxe: =DATADIF(data_inicial;data_final;tipo de diferena desejado) Na qual tipo de diferena desejado pode ser representado como:

Unidade Retorno
Y O nmero de anos completos entre a data inicial e a data final. O nmero de meses completos entre a data inicial e a data final. O nmero de dias completos entre a data inicial e a data final. A diferena entre as datas inicial e final, sendo que meses e anos so ignorados. A diferena entre as datas inicial e final, sendo que dias e anos so ignorados.

MD

YD

A seguir, veja um exemplo de uso da funo DATADIF com diferentes formatos para o retorno do valor:

Funes 23

FUNES DE INFORMAES
As funes de informaes so aquelas que analisam frmulas e condies e respondem com VERDADEIRO ou FALSO. Elas so bastante teis para verificar o tipo de contedo de determinadas clulas, se esto vazias ou no,se esto preenchidas com textos ou nmeros etc. A tabela a seguir mostra exemplos das principais funes lgicas:

JUNTANDO MAIS DE UMA CATEGORIA DE FUNES Funo PROCV


A funo 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_nmero ndice coluna) Ou seja: =PROCV(o que pesquisar;rea a pesquisar;nmero da coluna a trazer ) Imagine a seguinte tabela:

24 Treinamento avanado em Excel

Para verificar qual o nome de determinado filme (ttulo), siga estes passos: 1 Nomeie a rea com o catlogo dos filmes como FITAS, selecionando as clulas e indo ao menu Inserir > Nome > Definir ou ento digitando o Definir; nome diretamente na Caixa de nome e pressionando Enter.

2 Crie a tabela com os dados das vendas. 3 Posicione o cursor na clula D4 (ou na clula em que quiser que aparea o resultado da busca). 4 Clique no boto Inserir funo ..

Referncia. 5 Selecione as funes de Procura e Referncia

6 Clique sobre a funo PROCV e d OK OK. 7 Insira os argumentos da funo, conforme o exemplo abaixo:

Funes 25

8 Pressione OK com isso, ser informado o nome do filme que voc OK; est procurando. Copie para as clulas abaixo. 9 Experimente alterar o cdigo do filme para ver o Excel preencher os campos automaticamente. Se o usurio por acaso escolher um filme que no existe na lista, o Excel vai retornar este erro:

Para evitar esse tipo de problema, podemos criar uma combinao com as funes lgicas SE, ERROS e PROCV, como mostra a explicao a seguir: 1 Vamos comear conhecendo a sintaxe de cada uma das trs funes que vamos usar: =SE (condio; faa caso condio verdadeira; faa caso condio falsa) =ERROS(frmula) =PROCV(valor procurado; local a procurar; coluna desejada) 2 Para juntar as trs funes, devemos construir uma expresso com esta sintaxe: =SE(ERRROS (PROCV)); exiba 0; exiba o resultado de PROCV)

26 Treinamento avanado em Excel

3 Deixe o cursor no primeiro PROCV (ttulo do filme) e pressione o boto Inserir funo para editar o contedo da frmula, pois agora voc vai adicionar as funes SE e ERROS. nome, 4 Para inserir novas funes, utilize a rea com a Caixa de nome que agora exibe a ltima funo utilizada:

5 Utilize a funo SE, inserindo os dados mostrados na figura:

6 Editando a funo com a Caixa de nome voc pode ir de uma nome, funo a outra com um clique sobre a Barra de frmulas frmulas:

Funes 27

Gerando grficos Gerando grficosautomticos automticos


O que todo mundo quer, hoje em dia, poder apertar um nico boto e, com isso, resolver todos os problemas. Nada de errado nisso, pelo menos em se tratando de gerenciamento de dados. Que tal construir grficos que se atualizem automaticamente quando a tabela de dados for alterada? Que tal ter mo um sistema que varra a sua planilha e gere um grfico a partir dos dados de que voc precisa? Excelente, no? E o melhor: no difcil. Ao menos, no com os recursos oferecidos pelo Excel. Veja como construir um grfico dinmico que incorpore recursos de formulrios e lista de dados: 1 Crie, em uma planilha em branco, a seguinte tabela de dados:

2 Selecione as clulas com os nomes das publicaes (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 formulrios com o comando Barr fer err ormulrios ios. Exibir > Barra de ferramentas > Form ulrios

28 Treinamento avanado em Excel

6 Insira um controle de caixa de combinao, clicando neste boto:

7 Agora voc precisa ativar as propriedades do controle que acabou de criar. Para isso, clique nele com o boto direito do mouse, d um clique sobre a opo Formatar controle e, depois, preencha os ormatar controle ole, campos da janela como mostra a figura:

Procurando dados especficos


Ainda usando o mesmo documento do Excel que voc criou, vamos procurar alguns dados especficos, como, por exemplo, o nome de determinado produto. Isso pode ser feito usando-se a funo NDICE, que tem a seguinte sintaxe: =NDICE(rea a ser varrida; n da linha; n da coluna) Os nomes dos produtos esto no intervalo de clulas PRODUTOS; portanto, essa a rea que deve ser varrida. A linha que voc procura aquela na qual foi vinculado o controle de caixa de combinao logo, trata-se do resultado existente em C3. Dessa forma, a funo para verificar o nome do produto dever ser:

Gerando grficos automticos 29

Se, em vez do nome de um produto, voc quiser verificar os dados de JAN, basta aplicar esta frmula:

Repare que, para os meses, voc deve alterar apenas o nmero da coluna.Assim, quando for selecionar uma nova publicao, aparecero os dados referentes s vendas expressas nessa coluna.

CRIANDO O GRFICO
Para criar um grfico com os dados da planilha, comece selecionando as duas linhas que contm 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 grficos para criar um grfico do tipo pizza, seguindo este passo-a-passo: 1 Selecione os dados. 2 Clique no boto Assistente de grfico grfico. rfico

30 Treinamento avanado em Excel

3 Clique na opo de grfico do tipo pizza.

anar. 4 Clique no boto Avanar 5 Defina a opo Sries em como Linhas e clique em Avanar Sries anar.

6 Desabilite a opo Mostrar legenda na guia Legenda Legenda.

Gerando grficos automticos 31

dados, 7 Na guia Rtulo de dados habilite as opes Porcentagem e Nome categoria. da categoria

8 Pressione A v anar e, na tela que surgir, selecione a opo em, Como objeto em para que o grfico seja posicionado como um objeto na planilha.

9 A cada vez que voc selecionar um produto diferente, o Excel ir criar um novo grfico, de acordo com os dados selecionados.

32 Treinamento avanado em Excel

Noes de macro Noes demacro


Imagine ter de digitar as mesmas informaes todos os dias, a cada 15 minutos.Veja: isso no uma obra de fico.Para quem trabalha com servios financeiros e administrativos ou seja, 90% do pessoal do escritrio de uma empresa , esse tipo de situao pode ser realmente rotineiro. Mas, felizmente, existem as macros, pequenas aplicaes que podem nos ajudar a economizar muito tempo e poupar nossa pacincia. Neste captulo, voc ver que o sonho da rapidez no trabalho possvel. Uma macro nada mais do que uma seqncia de comandos armazenada em um boto. Usando macros, voc pode gerar grficos com configuraes especiais, aplicar clculos extensos repetidas vezes, entre muitos outros procedimentos, apenas clicando em um boto. Basta criar macros bem elaboradas. Neste captulo, voc vai deparar freqentemente com o termo Visual for pplications, VBA Basic for Applications o famoso VBA, que uma linguagem de programao 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 cdigo gerado no VBA compilado, e, por esse motivo, executa loops (laos) de programao rapidamente. Outra vantagem de utilizar o VBA que o cdigo gerado pode ser lido em qualquer aplicativo Microsoft, garantindo uma padronizao no modo de programao.

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 prtica e criar uma macro simples. Por enquanto, voc vai selecionar a ao 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 verso XP 33

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

2 Digite o nome da macro ( CLASSIFICA) e observe as opes disponveis: Nome da macro Procure escolher um nome significativo, e que tenha a ver com a funo que a macro vai executar. ecla Tecla de atalho solicita ao MS Excel que rode todas as macros por meio de teclas de atalho (por exemplo, Ctrl + C). Mas, cuidado com essa opo, 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 so arquivadas em um determinado local. Esse local pode ser a Pasta pessoal de macros que ir macros, criar um arquivo Pessoal.XLS (uma pasta oculta que permanecer na pasta de inicializao do MS Excel); uma Nova pasta de trabalho que ir criar trabalho, um arquivo (planilha) para armazenar somente a macro e a ltima opo;

34 Treinamento avanado em Excel

ou a pasta de trabalho atual (opo Esta pasta de trabalho que faz com trabalho), que o arquivo de macros seja armazenado juntamente com a planilha atual. Escolhendo essa ltima opo, se a planilha atual for movida ou copiada para um outro local, as macros iro junto com ela. OK, 3 Ao pressionar OK todos os comandos a ser executados na planilha sero armazenados. Por isso, fique atento: se voc cometer algum erro, pode ser mais fcil excluir a macro e comear tudo de novo do que tentar consertar o erro. 4 Posicione o cursor no primeiro registro da tabela (clula B5) e utilize o menu Dados > Classificar Escolha, primeiro a opo Pas e, em Classificar icar. as, seguida, Produto Produto. gravao. 5 Depois de fazer a classificao, pressione o boto Parar gravao

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 botes.

Teclas de atalho
Para rodar uma macro usando teclas de atalho, basta pressionar as teclas definidas na hora da sua criao.

Comandos
Para acessar o comando que apresenta as macros disponveis, faa o seguinte: 1 Pressione as teclas Alt + F8. 2 D um clique no nome da macro que quer executar e pressione o boto Executar Executar ecutar.

Algumas novidades na verso XP 35

Criando botes na planilha


Outra maneira de executar a macro criar um boto para ela: 1 Ative a barra de ferramentas de formulrios em Exibir > Barra de Formulrios. ferramentas > Formulrios 2 D um clique na opo Boto de comandos comandos.

3 Clique e arraste sobre a planilha no ponto em que deseja criar o boto. O Excel exibir uma lista com as macros existentes. Clique sobre a macro que voc quer associar ao boto:

4 Para alterar o texto do boto, 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 classificao por Pas e Produto, uma segunda macro, para encontrar o subtotal de cada pas. Siga estes passos: 1 Ative a gravao de novas macros, indo ao menu Ferramentas > macro. Macros > Gravar nova macro

36 Treinamento avanado em Excel

2 Nomeie a macro como SUBTOTAIS e d OK OK. 3 Posicione o cursor sobre o primeiro registro (B5) e clique em Subtotais. Dados > Subtotais 4 Pressione OK e calcule um novo subtotal, agora por produto. Desta vez, no se esquea de desabilitar a opo Substituir subtotais atuais. OK. ais D OK

5 Para executar a macro, desative os subtotais criados, indo ao menu Dados > Subtotais e pressionando o boto Remover todos e, em seguida, OK OK. 6 Crie um boto para a execuo dessa macro:

MACROS DE ENDEREOS ABSOLUTOS / RELATIVOS


No tpico anterior, voc criou duas macros. Se reparar nas referncias que essas macros fazem s clulas que contm as frmulas, vai perceber que esses endereos so absolutos. O que isso quer dizer? Por exemplo: ao selecionarmos o intervalo de clulas A1:F4 e alterarmos o estilo para negrito, sempre que executarmos a macro, o mesmo endereo, tendo contedo ou no, ser alterado para negrito. Ou seja, uma

Algumas novidades na verso XP 37

macro com endereo absoluto ser executada sempre na mesma posio na planilha. J uma macro com endereo relativo pode atuar sobre outras clulas que no a que serviu originalmente como base. Portanto, quando precisamos executar um procedimento em vrias clulas da planilha, o melhor a fazer utilizar um endereo relativo.

Macros com endereos absolutos


Para entender a diferena entre os dois tipos de endereos, 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 endereo e, novamente, pressione Tab. 5 Digite seu telefone e pare a gravao da macro. Para visualizar o efeito da macro que voc acabou de criar, executea vrias vezes.Voc ir perceber que o cursor insere o nome, o endereo e o telefone sempre na mesma linha (2). 2

Editando a macro
Para editar a macro, use o comando Ferramentas > Macros Na Macros. janela que aparecer, d um clique sobre o nome da macro desejada e pressione o boto 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 instrues:

38 Treinamento avanado em Excel

Macros com endereos relativos


Vamos, agora, criar uma macro com endereo relativo. Para isso,siga estes passos: 1 Apague o contedo da linha 2 para gravar uma nova macro. 2 Posicione o cursor na clula A2 e grave uma nova macro com o nome RELATIVOS. 3 Observe que, assim que o gravador de macros for iniciado, aparecer na tela uma pequena barra de ferramentas com dois botes:

4 Clique sobre o boto Referncia relativa

5 Na clula A2, digite seu nome e pressione a tecla Tab. 6 Em B2, digite seu endereo 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 clula que contm o seu nome (A3). 10 Pare a gravao da macro. Execute a macro vrias vezes e observe a diferena entre o comportamento dela e o da macro ABSOLUTOS.

Algumas novidades na verso XP 39

11 Edite a macro no editor do Visual Basic (Alt + F11).Voc ver as seguintes instrues:

Entendendo o cdigo
Comando ActiveCell ActiveCell.Select Descrio Clula ativa. Seleciona a clula ativa.

ActiveCell.FormulaR1C1=Sandra

Insere, na clula ativa, o contedo Sandra. Desloca o cursor 0 linhas para baixo e uma coluna para a direita. Desloca o cursor uma linha para baixo e duas colunas para a esquerda.

ActiveCell.Offset(0,1)

ActiveCell.Offset(1,-2)

40 Treinamento avanado em Excel

O editor do Visual Basic O editor do Visual Basic no Excel no Excel


As macros realmente facilitam a vida, no? E o que vimos at aqui apenas o comeo. Se voc quiser se aventurar pelo mundo da automatizao de processos, vale a pena dedicar algum tempo ao estudo do Visual Basic. Neste captulo, apresentaremos uma viso geral sobre o editor do VB que vem embutido no MS Excel. Com um pouco de perseverana, voc poder fazer parte daquele seleto clube de pessoas que dizem: Fazer o relatrio estatstico 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 trabalho oferecido pelo editor do Visual Basic. S para lembrar, para abrir o editor basta pressionar Alt + F11 ou ir ao menu Ferramenerr Macros Basic. tas > Macros > Editor do Visual Basic Se preferir abrir a tela do editor do VBA diretamente para uma macro que j exista no seu documento, voc pode ir at Ferramentas > Macros > Macro , clicar err Macros Macro sobre o nome da macro a ser editada, e depois no boto Editar Editar.

A JANELA DO EDITOR DO VISUAL BASIC

O editor do Visual Basic no Excel 41

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 contm etc.. Ou seja, a janela Projeto permite visualizar os objetos da aplicao atualmente aberta (pasta de trabalho, documentos e mdulos). Caso no esteja visualizando essa rea, pressione o boto ou tecle Ctrl + R. Nessa janela existem ainda trs cones que permitem alterar o modo de visualizao da estrutura: Abre uma tela (pgina) com os mdulos (rotinas) de classe da aplicao. Exibir cdigo Exibe a janela de mdulo que contm o cdigo em VBA que est associado ao objeto selecionado. Alterna entre a janela do Editor do Visual Basic e a janela original da aplicao, com o objeto selecionado.

Exibir objeto

Alternar entre pastas Faz com que a exibio da janela ProProjeto alterne entre a hierarquia dos objetos e uma lista simples dos mesmos. Na janela Projeto repare que h vrios cones diferentes. O signifiProjeto ojeto, cado deles est na tabela a seguir: Permite a abertura de todos os objetos de uma pasta de trabalho, como planilhas, formulrios, mdulos etc.. Pasta1 o nome do arquivo que est sendo editado no momento; quando o arquivo salvo, o nome substitudo pelo que voc escolher. a referncia pasta de trabalho que est aberta no momento. Mostra tambm todos os eventos (procedimentos) pertencentes a essa pasta, tais como abertura de arquivo, fechamento de arquivo etc. Exibe a folha de cdigo com as rotinas para a planilha especfica. Abre uma tela com os cdigos existentes para a criao de rotinas (macros) diversas para essa pasta de trabalho.

42 Treinamento avanado em Excel

Abre uma tela (pgina) com os mdulos (rotinas) de classe da aplicao. Abre o formulrio criado pelo usurio. Propriedades mostra o nome do mdulo em uso e suas propriedades atuais. Esta janela se divide em duas sees, uma com as propriedades em ordem alfabtica, e outra com as mesmas propriedades separadas por categorias de comandos. Mdulo esta janela exibe o mdulo atual. Mdulo a unidade bsica de um cdigo em VBA, e funciona como se fosse um local em que so armazenadas todas as macros criadas. Podemos tambm descrever mdulo como uma seqncia de instrues que ensina ao MS Excel o que fazer. rea de trabalho trata-se da rea disponvel para a manipulao dos mdulos.

Mdulos
Na tabela que acabamos de mostrar, falamos muito em mdulo mdulo. Como dissemos, um mdulo como um local em que so armazenadas todas as macros criadas.Todo mdulo possui procedimentos, que so as normas para a conduo da tarefa. No VBA, todos os procedimentos devem comear com a instruo SUB ou FUNCTION. Para entender melhor, observe o cdigo da macro ABSOLUTOS, que voc criou no comeo deste captulo:

O editor do Visual Basic no Excel 43

Objetos
Outro conceito importante na programao com VBA o de objetos. Temos vrios objetos dentro de um aplicativo: por exemplo, uma barra de ferramentas, uma planilha aberta, uma caixa de texto etc.. Portanto, um objeto um elemento controlvel por meio da linguagem VBA, e que utilizado na execuo de tarefas. No VBA, quando voc se refere a um objeto, na verdade est se referindo a uma coleo de objetos que inclui o objeto em si. Assim, a referncia deve conter primeiramente o nome da coleo qual o objeto pertence, e depois qual o item especfico.Veja alguns exemplos de referncias a objetos no VBA: orkSheets(Plan1.xls) WorkSheets(Plan1.xls) Coleo de objetos Worksheet (planiorksheet lhas), referindo-se ao objeto Plan1.

Range( e(A1:C3).Select Range(A1:C3).Select

Coleo de objetos Range que se Range refere s reas. ksbook Coleo de objetos Worksbook pastas de trabalho.

orkBooks WorkBooks

Os objetos organizam-se em uma hierarquia. No topo dela encontra-se o objeto A pplication que, no nosso caso, o prprio Excel. pplication, Abaixo de A pplication em ordem decrescente de nvel hierrquipplication, co, aparecem os objetos Workbook AddIn Dialog MenuBar ToolBar orkbook AddIn, Dialog,MenuBar oolBar, kbook, uBar, Window, e assim por diante. Para nos referir a um deles, precisamos indow informar a que coleo pertence o objeto e qual esse objeto:

O tipo mais comum de referncia aquele feito a uma planilha ou a clulas de uma planilha.Tanto planilhas quanto clulas so objetos ativos. A tabela a seguir mostra os objetos ativos no MS Excel:

44 Treinamento avanado em Excel

ActiveCell ActiveDialog ActiveDialog ActiveMen eMenuBar ActiveMenuBar ePrinter ActivePr ActivePrinter ActiveWindow eWindo ActiveWindow

ActiveChart ActiveX ActiveX ePanel ActiveP ActivePanel ActiveSheet ActiveSheet ActiveWorkbook eWor ActiveWorkbook

Experimente, por exemplo, digitar as seguintes instrues logo abaixo do cdigo da sua macro: Sub AlteraExibio() With ActiveWindow .DisplayGridlines = False .DisplayHeadings = False .Zoom = 75 End With End Sub Para que a macro seja executada na janela de cdigos, utilize o boto 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 Projeto e ative o objeto Worksheet como mostra a figura: Projeto orksheet ksheet,
Sub AlteraExibio() With ActiveWindow .DisplayGridlines = False .DisplayHeadings = False .Zoom = 75 End With End Sub Incio da macro (procedimento) Com a janela ativa No exibir linhas de grades No exibir cabealhos de linhas/colunas Zoom de 75% Finaliza a janela ativa Finaliza a macro

O editor do Visual Basic no Excel 45

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

Evento Activate Activate BeforeDoubleClic oreDoubleClick BeforeDoubleClick

Quando ocorre Quando uma planilha ativada. Ao clicar duas vezes em uma planilha.

BeforeRightClick oreRightClic BeforeRightClick

Ao clicar com o boto direito do mouse sobre uma planilha. Depois de toda a planilha ser recalculada. Quando as clulas das planilhas so alteradas pelo usurio. Quando a planilha desativada. Quando a seleo alterada em uma planilha.

Calculate Change Change

Deactivate Deactivate SelectionChange SelectionChange

46 Treinamento avanado em Excel

Exibindo mensagens ao usurio


As caixas de mensagem funcionam como a voz do programa, o meio de comunicao entre o aplicativo e a pessoa que o est utilizando. So elas que avisam ao usurio quando acontece algum erro, permitem que ele escolha o que fazer a seguir, ou mesmo abrem espao 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 usurio para que ele aproveite completamente o documento do Excel que voc criou. Afinal de contas, quem no se comunica se estrumbica!

FUNO MSGBOX
possvel criar macros que exibam mensagens na tela, para informar o usurio sobre alguma operao que tenha sido executada, alert-lo sobre erros etc. S que, diferentemente do que temos feito at agora, a mensagem em si no pode ser criada apenas ligando o gravador de macros. Ela deve ser inserida como parmetro para a funo MSGBOX, que tem a seguinte sintaxe: MSGBOX Mensagem, tipo da caixa,Ttulo Em que: Mensagem a mensagem que dever aparecer na caixa. O texto deve ser digitado entre aspas, com tamanho mximo de 1024 caracteres. Se voc quiser que o texto apresentado seja o valor de uma varivel, digite o nome da varivel, sem aspas. Tipo da caixa define o tipo da caixa de dilogo (se ser uma informao, um alerta de erro etc.). Ttulo Define o ttulo da caixa de dilogo.

Exibindo mensagens ao usurio 47

Para testar a exibio de mensagens com a funo MSGBOX, crie, na janela do Editor do Visual Basic, uma macro com as seguintes instrues: Sub TestaMensagem() MsgBox Esta mensagem s contm o prompt End Sub Execute a macro pressionando a tecla F5. Voc ver esta caixa de mensagem:

OUTROS EXEMPLOS DE MENSAGEM


H vrios tipos de caixa de mensagem.Vejamos agora um exemplo contendo um boto de OK Este o cdigo da caixa: OK. Sub TestaMensagem2() MsgBox Prompt - Texto da mensagem, _ vbExclamation + vbOKOnly,VBOK o tipo _ de boto, e TITLE o ttulo End Sub No cdigo, repare no smbolo de underscore (_) no fim da segunda linha. Ele usado para quebras de linha. Quando uma linha de comando no couber na linha da tela, quebre-a com um underscore. Assim, mantm-se a continuidade do comando. O resultado do cdigo digitado o seguinte:

48 Treinamento avanado em Excel

CAPTURANDO RESPOSTAS DO USURIO


Na maioria das vezes, queremos que o usurio possa interagir com a caixa de mensagem, escolhendo clicar em um boto ou inserir algum dado. O VBA disponibiliza botes prontos para voc incluir na sua caixa de mensagem. Cada um deles tem um nmero correspondente, bem como um cdigo VBA. Veja quais so eles na tabela a seguir: Boto Boto OK Cancelar Anular Anular Repetir Ignorar Ignorar Sim No Nmero correspondente Nmero correspondente 1 2 3 4 5 6 7 Cdigo VBA Cdigo VBA Cdigo VBA Cdigo VBA VbOk VbCancel VbAbort VbRetry VbIgnore VbYes VbNo

O cdigo a seguir gera uma caixa de mensagem com trs botes: Anular Repetir e Ignorar Anular ular, Ignorar ar:

Sub TestaResposta () Resposta = MsgBox(Pressione um dos _ botes abaixo:, vbAbortRetryIgnore, _ ATENO!!) If Resposta = 3 Then MsgBox Voc pressionou ANULAR.
End If End Sub Nessa caixa de mensagem, o usurio deve clicar em um dos trs botes:

Exibindo mensagens ao usurio 49

O cdigo do boto selecionado pelo usurio ser armazenado em uma varivel chamada Resposta. Se o usurio pressionar o boto Anular ular, Anular o valor armazenado na varivel ser 3, e ser gerada uma nova mensagem.

Funo INPUTBOX
Um tipo de caixa de mensagem ainda mais interativo aquele em que o usurio pode inserir dados. Para isso, voc pode usar a funo INPUTBOX. Vejamos um exemplo. O cdigo Sub Entrada() Resp = InputBox(Qual a palavra-chave?) Range(A1) = Resp End Sub , faz com que aparea a caixa de mensagem a seguir, em que o usurio deve inserir determinada palavra-chave:

Neste outro exemplo, temos uma caixa de dilogo em que o usurio deve inserir um valor de salrio:

50 Treinamento avanado em Excel

ADICIONANDO COMENTRIOS AO CDIGO


Comentrios so trechos do cdigo que no so executados, servindo apenas para manter uma documentao sobre ele. Eles so muito teis, inclusive para a prpria pessoa que criou o cdigo por exemplo, se voc tiver que atualizar o programa depois de muito tempo, vai ter condies de entender o que est expresso nele. Para fazer com que um trecho do cdigo seja um comentrio no VBA, basta colocar um apstrofo () no incio da linha, como no exemplo a seguir: Sub Entrada() Resp = InputBox(Qual a palavrachave?,Senha) Armazena em Resp (varivel) a resposta da pergunta de INPUTBOX Range(A2) = Resp Armazena na clula A1 a resposta existen te na varivel End Sub

Exibindo mensagens ao usurio 51

Criando um formulrio no VBA


No dia-a-dia, no queremos nem ouvir falar em formulrios: imediatamente nos vem mente qualquer idia relacionada com burocracia... Mas, na hora de criar interfaces de macros, inclusive no Excel, os formulrios so essenciais. Eles funcionam, grosso modo, como caixas de mensagem turbinadas muito turbinadas. Com um formulrio, voc pode coletar dados do usurio, pedir que ele escolha entre opes pr-existentes, entre muitas outras atividades interativas. E as informaes recolhidas podem ser usadas para preencher uma planilha, por exemplo. Neste captulo voc vai aprender a criar e configurar formulrios, bem como associar os campos e controles deles com planilhas.Tudo isso, claro, com os recursos do nosso velho conhecido VBA.

CRIANDO UM FORMULRIO
No editor do Visual Basic do Excel, acesse o comando Inserir > Inserir UserForm UserForm.

Voc pode definir caractersticas como nome, cor, estilo de borda, fonte de textos, entre outras, para o seu formulrio. Para facilitar essas configuraes, ative a janela Propriedades com o comando Exibir > Janela Propriedades ou usando a tecla F4. Propriedades, opriedades

52 Treinamento avanado em Excel

A BARRA DE FERRAMENTAS DE FORMULRIOS

Para que o usurio possa interagir com o formulrio, voc deve incluir controles nele isto , botes, caixas de textos etc. A maneira mais fcil de fazer isso usar a opo Exibir > Caixa de ferramentas ferramentas, na qual basta clicar sobre o controle desejado para que ele passe a fazer parte do formulrio.

A tabela a seguir apresenta os controles que podem ser includos no seu formulrio: Controle Nome Selecionar objetos Rtulo Caixa de texto Caixa de combinao Utilidade Permite selecionar um ou mais objetos dentro do formulrio. Insere ttulos e textos explicativos dentro do formulrio. Permite que o usurio insira dados em um campo. Utilizado para criar uma lista de dados, permitindo a escolha de um deles.

Criando um formulrio no VBA 53

Caixa de listagem

Caixa de seleo Boto de opo Boto de ativao Moldura

Boto de comando

Faixa de tabulao

Multipgina

Barra de rolagem

Barra de rotao

Imagem

RefEdit

Semelhante caixa de combinao, mas com a diferena de que os dados so exibidos em mais de uma linha ao mesmo tempo. Utilizado para criar uma opo de seleo. Utilizado para criar um boto que seleciona uma determinada opo. Utilizado para criar um boto que pode ser ativado ou no. Utilizado para criar uma moldura em volta de um conjunto de controles, agrupando-os. Utilizado para criar um boto de comando, como OK Cancelar OK, Cancelar, Salvar etc. Utilizado para apresentar um conjunto de informaes em faixas separadas. Utilizado para apresentar vrias guias de dados, cada uma com informaes diferentes. Voc pode, por exemplo, visualizar os dados pessoais de um cliente em uma guia, e os dados comerciais em outra. Utilizado para criar uma barra de rolagem no sentido horizontal ou vertical. Utilizado para incrementar valores em controles de textos (como nmero de prestaes, % de juros etc.). Utilizado para inserir imagens no formulrio. So aceitos formatos como .jpg, .bmp, .ico, entre outros. Utilizado para exibir o endereo de um intervalo de clulas inserido ou selecionado em planilhas.

54 Treinamento avanado em Excel

INSERINDO UM CONTROLE
Agora que voc j conhece os controles que podem ser inseridos em um formulrio, veja como inclu-los: 1 Na Caixa de ferramentas d um clique sobre o controle desejado. ferramentas, 2 Na janela UserForm posicione o cursor sobre o ponto em que UserForm, deseja inseri-lo. 3 Clique e arraste o mouse sobre a tela para desenhar o controle.

Criando um formulrio simples


A Caixa de ferramentas facilita muito o trabalho de insero de controles. Que tal colocar a mo na massa e partir para a criao de um formulrio simples? Tente criar um modelo como o apresentado na figura a seguir:

Depois de construir o formulrio, guarde-o.Vamos voltar a us-lo mais adiante.

Criando um formulrio no VBA 55

ALTERANDO O NOME DOS CONTROLES


Para capturar os dados que o usurio inserir nos controles do seu formulrio, necessrio nomear os controles. Do contrrio, no ser possvel referir-se a eles mais tarde. O nome de um controle definido por sua propriedade Name como descrito nos passos a seguir: Name, UserForm, 1 Na janela UserForm d um clique sobre o controle desejado. Propriedades, Name. 2 Na janela Propriedades d um clique sobre a propriedade Name 3 Digite o nome que voc quer dar ao controle. Uma dica: para facilitar a identificao dos controles, interessante padronizar a nomenclatura. Um padro muito utilizado o de iniciar o nome com trs letras indicando qual o tipo de controle criado. Por exemplo,lblVeculo: nesse caso, as letraslbl indicam que o controle do tipo rtulo (em ingls, label); e o nome especfico desse controle do tipo rtulo est expresso logo em seguida (Veculo).

A propriedade Caption
Certos controles, como rtulo, boto de opo, caixa de texto, moldura e boto de comando, possuem a propriedade Caption a qual Caption, permite acrescentar um texto de apresentao do controle. Suponha que voc tenha uma caixa de texto na qual o usurio deva digitar o nome dele. Para que ele saiba o que deve fazer, necessrio que exista um texto explicativo, como Digite aqui o seu nome. Esse texto definido na propriedade Caption Caption.

ALTERANDO OS CONTROLES DO FORMULRIO


Agora chegou a hora de retomar o formulrio que voc criou h pouco.Voc vai definir os nomes e os captions de alguns controles, seguindo a orientao da tabela a seguir:

56 Treinamento avanado em Excel

Objeto label1 xtbox1 Textbox1 Commandbutton1 Commandbutton2 Label2 ListBox1 Frame1 OptionButton1 OptionButton2 label3 xtBox2 TextBox2 SpinButton1 Label5 CheckBox1 Label4

Name lblNome txtNome cmdOk cmdCancelar lblVeculo ltbVeculo frmPagamento optVista optParcelado lblParcelas txtParcelas spiParcelas

Caption Nome:

OK Cancelar Veculo:

Opes de pagamento vista Financiado N de parcelas

Preo: chkNovo LBLPreo Cliente novo [em branco]

Inserindo uma imagem


Como fazer para incluir uma imagem em seu formulrio? simples. Voc j sabe que o controle correspondente o Imagem Aproveite o Imagem. passo-a-passo a seguir para definir a imagem que deve ser associada ao controle Imagem que voc j inseriu no seu formulrio: 1 No formulrio que voc criou, d um clique sobre o controle de imagem.

Criando um formulrio no VBA 57

2 Na janela Propriedades v at a propriedade Picture e clique no Propriedades, boto com as reticncias. 3 Ser aberta uma janela de navegador, para que voc escolha a imagem a ser inserida. Procure o arquivo de imagem desejado e d um duplo clique sobre ele. 4 Para que a figura no aparea cortada, altere a propriedade PictureSizeMode eSizeMode. PictureSizeMode 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 formulrio ter esta aparncia (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 True Para isso, ue. basta dar um clique sobre o controle txtNome no seu formulrio e alterar a propriedade desejada na janela Propriedades Propriedades.

Alterando a ordem dos controles


Com o formulrio j construdo, voc pode navegar pelos controles existentes usando a tecla Tab. Com ela, os objetos so selecionados de acordo com a ordem em que foram criados. Mas possvel alterar essa ordem, para, por exemplo, torn-la compatvel com a das colunas de uma planilha. Para isso, v ao menu Exibir > Ordem de tabulao tabulao.

Preparando o ambiente dos dados Preparando o ambiente dos dados


Na janela que aparece, clique sobre o controle que deseja mudar de posio e, depois, sobre os botes Mover para cima ou Mover baixo. para baixo 58 Treinamento avanado em Excel

Nosso intuito relacionar o formulrio que criamos com planilhas do Excel. S para ter uma idia de como ele vai ficar sobre a planilha, clique sobre o boto . Depois, feche o formulrio sobre a planilha para retornar ao editor do VBA. Na planilha, vamos preparar o ambiente em que os dados sero recebidos. 1 Construa a seguinte planilha:

2 Nomeie a planilha como Cadastro.

Preparando a tabela com os dados dos veculos


Em Plan2 devemos digitar a tabela com os veculos que temos na revendedora:

1 Renomeie a planilha como Veculos. 2 Selecione o intervalo A2:C19 e nomeie-o como VECULOS.

Associando a tabela de veculos com o controle


1 No Editor do Visual Basic, selecione o objeto lbtVeculos.

Criando um formulrio no VBA 59

2 Esse controle dever apresentar a tabela de produtos que est na planilha Veculos. 3 Defina a propriedade RowSource como Veculos (nome da rea RowSour wSource nomeada). 4 Para que sejam apresentadas as duas colunas com o modelo e o ano do veculo, altere a propriedade ColumnCount para 2. 5 Para exibir os ttulos altere a propriedade ColumnHeads para True.

Exibindo o formulrio
Agora que j fizemos a associao entre o formulrio e a planilha, vamos fazer com que a planilha adequada seja selecionada, e o formulrio, exibido. Isso ser feito digitando-se algumas linhas de cdigo no editor do VBA: 1 Na janela Projeto, ative a janela de cdigo com este boto:

2 Digite o seguinte cdigo: Sub Cadastro() Sheets(Cadastro).Select Selecionar a planilha Cadastro. frmVeculos.Show Exibir o formulrio com os veculos. End Sub 3 Esse cdigo vai posicionar o cursor sobre a planilha Cadastro (Plan1) e abrir o formulrio frmVeculos. 4 Execute a macro para ver o formulrio no centro da tela.

60 Treinamento avanado em Excel

EXIBINDO O PREO DO VECULO


No formulrio frmVeculos existe um controle com o nome lblPreo. Ele vai servir para exibir o preo de determinado automvel quando o usurio selecion-lo a partir da lista de veculos. Portanto, vamos adicionar cdigo ao controle ltbVeculo. D um duplo clique no controle ltbVeculo, para ir janela de cdigo. Digite estas linhas: Private Sub ltbVeculo_Click() Me.lblPreo.Caption = Sheets(Veculos). Ao ser selecionado um veculo da lista, no formulrio atual (Me), altere o caption no controle lblPreo Range(c & Me.ltbVeculos.ListIndex + _ 2).Value Acesse a coluna C da planilha Veculos, adicionando 2 ao ndice, pois o ndice inicial zero. Coluna A + 2 = C. Exibe o valor do veculo. End Sub

Descarregando o formulrio da memria


Quando o usurio clicar sobre o boto Cancelar o formulrio deveCancelar, r ser removido da memria, ou, em outras palavras, descarregado. Para que isso acontea, voc deve associar um cdigo a esse boto. D um clique duplo sobre ele para abrir a janela de cdigo. Nela, digite: Private Sub cmdCancelar_Click() Quando o boto Cancelar for pressionado, o formulrio dever ser descarregado. Unload Me Descarrega o objeto atual (Me). End Sub Voc deve ter reparado que no associamos comandos a todos os controles do formulrio. Isso porque controles como o boto de OK por OK, exemplo, exigem alguns conhecimentos que sero apresentados nos prximos captulos.Mas no desanime! Ao terminar o livro, voc ter um formulrio totalmente funcional,e, o melhor,inteiramente feito por voc.

Criando um formulrio no VBA 61

Manipulando clulas Manipulandoclulas


Hora de mais diverso! Se,no captulo anterior,voc gostou de criar uma planilha que interage com um formulrio, certamente vai ficar ainda mais feliz com o que as macros podem fazer pelo seu sistema de cadastro. Neste captulo, voc vai fazer o cursor do Excel movimentar-se sozinho pela planilha, enquanto os dados so coletados e manipulados tudo automaticamente! J pode comear a se sentir um programador emVBA:basta seguir os passo-apassos e prestar ateno sintaxe dos objetos e propriedades.

MTODOS DE MANIPULAO DE CLULAS


Podemos deslocar o cursor de uma clula 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 clulas B2, C4 e G5, por exemplo. Para isso, o cursor dever deslocar-se entre essas clulas e somar os seus valores. Usando alguns objetos e propriedades do VBA, podemos facilmente criar uma macro que realize esse deslocamento do cursor. De forma semelhante, voc pode usar uma macro para inserir frmulas em clulas especficas. O objetivo deste captulo que voc se familiarize com o VBA.Portanto, 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 clulas que est selecionado no momento. Por enquanto, voc no vai usar o sistema de cadastro. Portanto, faa o seguinte: 1 Abra um novo documento no Excel e v at o editor do VBA. Na janela de cdigo, digite: Sub VerSeleo() MsgBox ActiveWindow.RangeSelection.Address `Na janela atual, rea selecionada, endereo End Sub

62 Treinamento avanado em Excel

2 Para fazer um teste, volte para a planilha, rode a macro VerSeleo, e voc ver uma caixa de mensagem como esta:

Inserindo frmulas em uma clula


Suponha que voc queira inserir uma frmula na clula D6 de uma planilha chamada Cadastro. Uma possibilidade interessante usar o objeto Range e sua propriedade Formula O objeto Range define um Formula. intervalo de clulas, e a propriedade Formula permite associar uma frmula a esse intervalo. Vamos ver um exemplo de como utilizar Range e Formula Range ormula: 1 Em um novo documento do Excel, ou no mesmo em que voc inseriu a macro VerSeleo,v at a janela de cdigo do editor de VBA e digite: Sub DigitarFormula() Worksheets(Cadastro).Range(D6).Formula _ = =SUM(D2:D5) End Sub Esse cdigo far com que a frmula =SUM(D2:D5) seja inserida na clula D6.

O MTODO SELECT E A PROPRIEDADE SELECTION


O mtodo 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 mtodo Select e a propriedade Selection so ativados automaticamente.Veja um exemplo: Sub Selecionar() Sheets(Sheet1).Select Range(A1).Select ActiveCell.FormulaR1C1 = Name

Manipulando clulas 63

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 vrias 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 UTILIZAO DO MTODO RANGE


O Range um dos mtodos mais importantes na seleo de Range clulas. 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 avanado em Excel

Vamos ver o que faz cada linha do cdigo:

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

Range(ActiveCell, B6).Select

Range(B3:C8).Select

Manipulando clulas 65

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

Range(B2).Select

ActiveCell.Range(B2).Select

Range(IntervaloDeTeste).Range(A1).Select

End Sub

66 Treinamento avanado em Excel

Propriedade Offset
A propriedade Offset retorna um objeto Range que nada mais do Range, que um intervalo deslocado a partir da clula atual. Sua sintaxe : Expresso.Offset(RowOffset, ColumnOffset) Em que: RowOffset o nmero de linhas que pode ser um valor positivo, negativo ou 0 (zero) que o intervalo deve ser deslocado.Valores positivos deslocam o intervalo para baixo, e os negativos, para cima. O valor padro 0. ColumnOffset ColumnOffset o nmero de colunas que pode ser um valor positivo, negativo ou 0 (zero) que o intervalo deve ser deslocado. Valores positivos deslocam o intervalo para a direita, e os negativos, para a esquerda. O valor padro 0. Veja um exemplo de utilizao da propriedade Offset Offset fset: ActiveCell.Offset(10,7).Select De acordo com essa linha de cdigo, o intervalo ser deslocado dez linhas para baixo e sete colunas para a direita, a partir da clula ativa.

ATRIBUINDO VALORES S CLULAS DA PLANILHA


Agora chegou o momento de retomar o seu sistema de cadastro. O objetivo do formulrio que voc criou possibilitar que o usurio insira dados que sero passados para a planilha associada. o que vamos fazer agora. A primeira medida a tomar para que esse procedimento d certo garantir que, no incio da atividade da macro, o cursor esteja sempre na primeira clula que deve receber algum valor (no nosso caso, a clula A5 da planilha Cadastro). Depois, voc deve deslocar o cursor ao longo da planilha, para que as clulas recebam os valores dos campos do formulrio. Para isso, siga estes passos: 1 Abra a sua pasta de trabalho e v at a planilha Cadastro. Nomeie a clula A5 como ini.

Manipulando clulas 67

2 D um duplo clique no boto OK OK. 3 No editor do VBA, abra a janela de cdigo e digite a instruo: Private Sub cmdOK_Click Application.Goto reference:=ini Posiciona o cursor no incio da rea de cadastro. ActiveCell.Value = Me.txtNome.Text A clula atual recebe o valor do controle txtNome. ActiveCell.Offset(0,1).Activate Desloca o intervalo uma clula para a direita. ActiveCell.Value = Me.ltbVeculo.Value A clula atual recebe o valor do controle ltbVeculos. ActiveCell.Offset(0,1).Activate Desloca o intervalo uma clula para a direita. ActiveCell.Value = Me.lblPreo.Caption Recebe o contedo de lblPreo. ActiveCell.Offset(0,1).Activate Desloca o intervalo uma clula para a direita. ActiveCell.Value = Me.optVista.Value Armazena o valor de optVista. ActiveCell.Offset(0,1).Activate Desloca o intervalo uma clula para a direita. ActiveCell.Value = Me.txtParcelas.Value Armazena o valor de txtParcelas. ActiveCell.Offset(0,1).Activate Desloca o intervalo uma clula 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 cdigo, voc consegue fazer com que o cursor se desloque pela planilha, de modo a inserir dados em clulas diferentes.Assim, caminhamos mais um pouco em direo ao sistema de cadastro finalizado. 68 Treinamento avanado em Excel

Variveis de memria
O que voc comeu ontem no almoo? No se lembra, hein?... Talvez voc no tenha reservado um espao na sua memria para guardar essa informao. Imagine que voc o fizesse, e separasse um canto da sua memria para a informao chamada o que eu comi ontem no almoo. Hoje, o valor dessa informao poderia ser dobradinha. Amanh, o valor pode ser outro, como frango xadrez. Bem, no caso de nossa humilde equipe, esse valor varia conforme o cardpio do restaurante por quilo. Mas, independentemente do fator de variao do valor, o espao na memria estar garantido, o que facilita muito o trabalho com programao. Neste captulo, voc ver como lidar com variveis, que so elementos que recebem valores, os quais so armazenados no espao reservado na memria. Por enquanto, vamos deixar um pouco de lado o formulrio que voc criou mas isso no significa que ele ser esquecido.

CONCEITO DE VARIVEIS DE MEMRIA


Uma varivel um valor que fica armazenado na memria do computador enquanto o procedimento est rodando. Assim que o procedimento termina, a varivel removida da memria da seu nome ser varivel de memria ariv ivel memria ia. As variveis de memria no VBA armazenam valores de propriedades e resultados de clculos.

REGRAS PARA NOMEAO EM VBA


Para nomear procedimentos, constantes, variveis e argumentos em qualquer mdulo, obedea sempre s seguintes regras: No devem ser utilizados pontos, espaos, vrgulas, pontos de exclamao ou smbolos ($, @, # etc.).

Variveis de memria 69

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

COMO DEFINIR VARIVEIS


Para entender melhor como trabalham as variveis, digite as seguintes linhas na janela de cdigo do VBA: Sub ArmazenaVariveis() MeuValor = 500 MeuTexto = TEXTO MeuBooleano = True MinhaData = #12/3/2001# MinhaMoeda = 12.5 Atribuindo valores a variveis End Sub Nesse exemplo, definimos cinco variveis de tipos diferentes. Para ver como elas so armazenadas na memria, observe a janela Local, Local que pode ser acessada com o comando Exibir > Janela > ariv iveis Var iveis locais:

Logo ao acessar a janela Local voc vai notar que ela ainda no perceLocal, beu a existncia das variveis atribudas. Para que ela o faa, necessrio

70 Treinamento avanado em Excel

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 variveis, mas continua parado na primeira linha do procedimento. Isso acontece porque as variveis foram definidas, mas ainda no tm valores associados. Pressione F8 sucessivas vezes para que todas as variveis sejam vistas:

Quando o procedimento chega ao fim, as variveis so zeradas, e o mdulo nem ao menos se lembra de que elas foram utilizadas. A janela ariv iveis Variveis locais permite que voc saiba qual valor est realmente armazenado na memria naquele instante. Essa propriedade muito til nos casos em que deparamos com um erro de clculo e no sabemos o que o Excel est tomando como base. As variveis podem armazenar valores e objetos. Para atribuir um valor a uma varivel, podemos digitar seu nome, o sinal de igual e o valor que deve ser atribudo a ela:

Nomedavarivel = valor

DECLARANDO VARIVEIS
O VBA no exige que as variveis sejam declaradas, mas o ideal faz-lo sempre. Alis, existe, no VBA, um recurso padro para declarar as variveis automaticamente, por meio da instruo Option Explicit, Explicit que veremos mais adiante.

Variveis de memria 71

Ao declarar uma varivel, estamos solicitando ao VBA que reserve um certo espao na memria para armazenar o contedo dela. Existem diversos tipos de varivel (dependendo do tipo de valor que ela pode receber, como caracteres, nmeros, valores lgicos etc.). Especificandose o tipo da varivel, minimiza-se o espao de memria a ser reservado para ela. A declarao de variveis feita de acordo com esta sintaxe: Dim nomedavarivel As tipodavarivel Em que: Dim o termo proveniente de dimensionar, que, por sua vez, significa alocar. O Dim faz com que uma determinada quantidade de memria seja alocada para a varivel. Como dissemos no incio do captulo, voc pode utilizar a instruo Option Explicit (na seo de declaraes, que fica no incio do procedimento) para que o VBA passe a exigir que todas as variveis sejam declaradas. Uma vez includa essa instruo, o VBA verifica o cdigo na primeira vez em que o procedimento de um mdulo executado, para assegurar que todas as variveis tenham sido declaradas. Caso no encontre alguma das declaraes, ele pra exatamente no ponto em que encontrou a varivel no declarada, e retorna um aviso a respeito.

ESCOPO DAS VARIVEIS


O escopo de uma varivel refere-se ao domnio dentro do qual ela pode ser acessada. O VBA permite que a varivel tenha um destes nveis de escopo: Disponvel somente no procedimento; Disponvel somente no mdulo; Disponvel somente na pasta de trabalho; Disponvel em todas as pastas de trabalho.

72 Treinamento avanado em Excel

Variveis do nvel de procedimento


Para declarar uma varivel cujo escopo seja restrito ao procedimento em que ela se encontra, utilize a instruo Dim Assim, ela Dim. ficar disponvel somente nesse procedimento, e nenhum outro poder acess-la. Sub DefineVariveis() Dim ctNome As String Dim curSalrio As Currency Dim dtDataIncio As Date .... End Sub

Variveis do nvel de mdulo


Para declarar uma varivel de escopo restrito a um nico mdulo, inclua-a na seo de declaraes usando a palavra-chave Private Private: ivate Option Private Module Private NomeLivro No caso, poderamos utilizar Dim no lugar de Private na segunPriv ivate da linha do cdigo, mas, para enfatizar as variveis declaradas no incio do mdulo, a instruo mais utilizada a Private Private. ivate

Variveis de nvel global


Para declarar uma varivel disponvel a todos os mdulos existentes na pasta de trabalho, use a palavra-chave Public sem a instruPublic o Option Private Module O resultado ser uma varivel chamaPriv ivate Module. da Global que dever ser declarada na seo de declaraes: Global, Public strNomeLivro

TIPOS DE VARIVEL
Os tipos de varivel disponveis no VB so:

Variveis de memria 73

Tipo de dados Bln Cur CurCusto 8 bytes BlnReady 2 bytes True ou false

Prefixo

Exemplo

Memria requerida

Intervalo de dados

Boolean

Currency

922.337.203.685.477,5808 a 922.337.203.685.477,5808 1 de janeiro de 100 a 31 de dezembro de 9999 1.797693134862232e308 a 4.9406564584124e-324 -32.768 a 32.767 -2.147.483.648 a 2.147.483.648 - 3.402823E38 a 1.401298E-45

Date

Dt

DtPgto

8 bytes

Double

Db

DbCont

8 bytes

74 Treinamento avanado em Excel


Int Lng Sng Str SngTaxaJuros LngVendas 4 bytes 4 bytes IntQtosFilhos 2 bytes StrPrimNome 10 bytes + comprimento
da string (texto)

Integer

Long

Single

String

Zero a aproximadamente 2 bilhes de caracteres 16 bytes 1 byte Byte 0 0 a 255 a 255

Variant* Byt

Vnt

VntResposta BytTecla

(*) Variant um tipo especial de varivel, que pode conter qualquer ariant tipo de dado. Se, na declarao de uma varivel, no for especificado o ariant iant, tipo, o Excel automaticamente ir criar uma varivel Variant que requer mais espao de memria do que os demais tipos.

Byte

Estruturas de programao
Seus amigos o chamam para ir ao cinema em um dia cinzento.Voc, resfriado, responde:Se no chover eu vou, mas, se chover, prefiro ficar em casa.... Pronto! Voc acaba de usar uma estrutura de programao condicional. Como voc v, no necessrio ser um daqueles gnios dos filmes de fico adolescente para compreender princpios de programao. Fluxos de cdigo so mera questo de lgica.Voc s precisa se familiarizar com a linguagem de programao e treinar um pouco. Neste captulo, voc ver como criar rotinas de programao que tomem diferentes decises de acordo com a escolha do usurio, fazendo uso das estruturas de programao. No sistema de cadastro que voc est construindo, por exemplo, vamos fazer com que o texto inserido na planilha varie conforme a opo que o usurio tiver escolhido no formulrio.

ESTRUTURAS CONDICIONAIS
As estruturas condicionais criam situaes 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 opes para avaliar a entrada de dados do usurio, e executam afirmaes em uma condio bsica como resposta. Embora tenhamos trs variaes da estrutura If todas elas so iniciadas com a declarao If ... Then e, If, em geral, terminam com End If If. Essa declarao avalia se uma condio verdadeira ou falsa, e direciona o fluxo do programa de acordo com o solicitado. Se mais de uma condio na estrutura verdadeira, somente o cdigo especificado como primeira condio verdadeira ser executado. If ...Then Em geral, usa-se essa estrutura quando o programa possui uma deciso do tipo um ou outro. Ela aceita dois tipos de sintaxe:

Estruturas de programao 75

If [condio] Then Clasula Repare que, nesse modelo, no usamos a instruo End If Esse If. tipo de declarao 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 ms no _ formato MMM-AA) If MinhaData <> Then MsgBox Continuar _ a macro End Sub If [condio] Then Clasula End Sub Nesse segundo tipo de sintaxe, a clusula da estrutura no est na mesma linha em que se encontra a palavra Then Ou seja, a estruThen. tura se estende por mais de uma linha. Nesse caso, devemos fechla com End If como no exemplo a seguir: If, Sub Demonstra If() If ActiveSheet.Name <> EXEMPLO Then MsgBox Voc est na planilha errada! End If End Sub Aplicando a estrutura If no formulrio Vamos, agora, aplicar o que aprendemos sobre If no sistema de cadastro que voc criou. No formulrio de cadastro, necessrio verificar o contedo de Opes de pagamento para definir qual pagamento caminho o programa vai seguir: se o usurio selecionar a opo vista, vista dever ser inserida a palavra vista na clula; caso contrrio, dever ser inserida a palavra Financiado. Para fazer isso, siga este passo-a-passo:

76 Treinamento avanado em Excel

1 Abra o arquivo com o sistema de cadastro. No editor do VBA, d um duplo clique sobre o boto cmdOK, para acessar seu cdigo. 2 Agora voc vai adicionar uma estrutura If para testar se a caixa de opo optVista est ativada. Portanto, precisamos substituir, no cdigo, as linhas referentes ao controle optVista por novas instrues. Para fazer isso, procure as seguintes linhas no cdigo do boto cmdOK: ActiveCell.Value = Me.optVista.Value Desloca o intervalo uma clula 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 nmero 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 cdigo, se o usurio selecionar a opo optVista, a clula correspondente na planilha ser preenchida com o valor vista. Do contrrio, ser preenchida com o valor Financiado. Vamos, agora, inserir instrues para verificar se a caixa chkNovo foi ativada. Ainda no cdigo para o boto cmdOK, procure estas linhas:

ActiveCell.Value = Me.chkNovo.Value Desloca o intervalo uma clula para a direita. Armazena o valor de chkNovo.
E substitua-as pelas seguintes:

Estruturas de programao 77

If Me.chkNovo.Value = True Then ActiveCell.Value = SIM Else ActiveCell.Value = NO End If Essas linhas fazem com que, se o usurio for um cliente novo, a clula correspondente na planilha seja preenchida com o valor SIM e, se no for, ela seja preenchida com o valor NO.

A estrutura Case Select


Esta estrutura ideal para testar um valor dentre vrios possveis. Sua sintaxe : Select Case [expresso] Case [expresso 1] Declarao Case [expresso 2] Declarao ... Case [else] Declarao End Select A estrutura Case Select avalia o resultado da expresso uma nica vez, comparando-o, depois, com outros valores, para determinar qual bloco de cdigo ser chamado. Vamos utilizar Case Select para manipular os dados a respeito do nmero de parcelas em nosso sistema de cadastro. Siga estes passos: 1 No cdigo do boto 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 avanado em Excel

MsgBox (Tome cuidado... os juros vo _ aumentar.) Case 3 MsgBox (Nossa, aqui no Kazas do _ Norte!) Case 4 MsgBox (T mal... agora agenta!) End Select Em uma estrutura Select Case somente uma das declaraes Case, disponveis ser executada.

ESTRUTURAS DE LOOPING
Diferentemente das estruturas condicionais, as de looping (ou de repetio) permitem que uma mesma instruo seja executada repetidas vezes. possvel estipular um nmero definido de vezes que o programa deve rodar, ou atrelar esse valor a uma condio.

Estrutura Do ... Loop


Esta estrutura pode ser utilizada nos casos em que desejamos repetir um mesmo bloco de instrues at que determinada condio seja satisfeita, ponto em que o cdigo sai do loop e passa a executar a prxima instruo. Para sair de uma estrutura Do ... Loop deve-se utilizar a instruo Do. Exit Do O ideal us-la aps a avaliao de alguma condio, como, por Then. exemplo, If ...Then Nesse caso, se a condio for verdadeira, o procedimento passar para a instruo existente imediatamente aps o loop. Do [bloco de instrues] Loop condio Veja um exemplo de estrutura Do ... Loop que realiza o loop Loop, trs vezes consecutivas: Sub TestandoDoLoop() Dim Contador As Integer Declara a varivel Contador,

que

ir

Estruturas de programao 79

armazenar nmeros inteiros. Contador = 0 Inicializa a varivel Contador. Do Inicia o loop MsgBox O contador est em: & Contador Contador = Contador + 1 Incrementa Contador. If Contador = 3 Then Se a condio for True, MsgBox Contador foi ativado trs vezes Exit Do sair da instruo Do. End If Loop Until Contador > 3 MsgBox Samos do loop agora. End Sub Para visualizar o funcionamento desse procedimento, v at a primeira linha do cdigo e pressione a tecla F8. Voc ver que o Excel l e executa a linha de cdigo, passando ento para a linha seguinte, e prosseguindo at o final do bloco de instrues.

Estrutura For ... Next


A estrutura For ... Next faz com que um bloco de instrues rode Next um nmero predefinido de vezes. Esse nmero estabelecido logo na primeira linha. A ltima linha deve conter apenas a palavra Next Entre Next xt. essas duas instrues (For ... Next insere-se o cdigo a ser repetido. Next xt), F For Condio [bloco de instrues] Next No exemplo a seguir, criamos um contador (representado por uma varivel) para controlar o nmero de vezes que o bloco de instrues deve ser executado. Confira:

80 Treinamento avanado em Excel

Sub DemonstraNext() Dim Contador As Integer Define a varivel Contador como um nmero inteiro. ActiveSheet.Range(A1).Select Posiciona o cursor em A1. For Contador = 1 To 10 Executa a mesma instruo 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 clula 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 instrues novamente. MsgBox (Fim do contador) Aps executar o bloco 10 vezes, exibe a mensagem Fim do contador. End Sub Nesse cdigo, repare no seguinte: or, O loop comea com a palavra For seguida do nome da varivel Contador e do valor inicial para a mesma. Cada vez que o loop processado, acrescenta-se uma unidade varivel Contador e exibido o resultado na barra de status.

Estrutura For Each Next


Ao contrrio da estrutura For ... Next comum, a For Each ... Next Each Next Next no exige que se defina o nmero mximo de vezes que o loop dever ser executado. Por isso, ela permite trabalhar com todos os objetos existentes em uma coleo. Basta definir uma varivel para representar o objeto desejado e sua respectiva coleo.

Estruturas de programao 81

For each Condio [bloco de instrues] Next Veja um exemplo de utilizao do For Each ... Next Each Next xt: Sub DemonstraForEach() Dim Plan As Object Declara a varivel 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 clula ir conter o nome da planilha. Next Muda de planilha. End Sub

Outros exemplos de criao de loops


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

Listando arquivos existentes


Vejamos agora como verificar a existncia de determinado arquivo .xls em um diretrio, e exibir seu nome na primeira linha de uma planilha: Sub ListaArqs() Dim Linha As Integer Dim Arquivo As String Define as variveis Linha e Arquivo. Linha = 1 Arquivo = Dir(*.xls) Atribui valores s variveis. Cells(Linha, 1) = Arquivo Atribui o contedo da varivel Arquivo clula (1,1). Linha = Linha + 1 Acrescenta 1 ao contador de linhas. Arquivo = Dir 82 Treinamento avanado em Excel

Atribui o nome do arquivo (diretrio) varivel Arquivo. Cells(Linha, 1) = Arquivo A clula atual exibe o nome do arquivo (contedo da varivel). End Sub

Usando estrutura Do ... Until


O cdigo do exemplo anterior mostrava apenas um arquivo do diretrio (no caso, o primeiro de uma lista). Se voc quisesse prolongar esse mesmo cdigo 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 Until, suar a camisa, use a estrutura Do ... Until de modo que a execuo do bloco de instrues seja repetida at a aplicao no encontrar mais nenhum arquivo .xls no diretrio. Para isso, utilize este cdigo: Sub ListaArqs() Dim Linha As Integer Dim Arquivo As String Declara a existncia das variveis Linha e Arquivo. Linha = 1 Atribui o valor 1 varivel Linha. Arquivo = Dir(*.xls) Armazena o nome do arquivo .xls na varivel Arquivo. Do Until Arquivo = Repete o bloco de instrues at que a varivel Arquivo esteja em branco. Cells(Linha, 1) = Arquivo Atribui clula atual o contedo da varivel Arquivo. Linha = Linha + 1 Incrementa o contador de linhas (Linha) em uma unidade. Arquivo = Dir Armazena o contedo de Dir (diretrio) na varivel Arquivo. Loop Caso encontre outros arquivos, repete o bloco de instrues. End Sub Estruturas de programao 83

Criando funes
O Excel tem mais de 400 funes. funo a rodo! A maioria dos usurios conhece apenas uma parte delas, j que algumas atendem a necessidades muito especficas, de interesse para poucas pessoas. Mas, mesmo dispondo dessa enorme quantidade de funes, voc pode querer ou precisar de alguma que no conste da lista. O que fazer? simples: crie a sua prpria funo! Veja, neste captulo, como desenvolver o cdigo para uma funo de clculo de financiamento simples. Uma vez criada, ela poder ser usada quantas vezes voc quiser, exatamente como qualquer funo nativa do Excel.

CRIANDO FUNES
At aqui, voc trabalhou com a instruo Sub com a qual desenSub, volveu suas macros. Para criar funes, vamos comear a usar a instruo Function As funes criadas ficam armazenadas na lista de Function. funes do Excel, juntamente com as demais, como SOMA, MDIA, DATA etc.. Elas modificam apenas valores nas planilhas, nunca sua estrutura ou caractersticas. Para criar uma funo, devemos utilizar a seguinte sintaxe: Function NOME(Argumento1 As Tipo, Argumento 2 As Tipo, ...) As Tipo instrues Nome = resultado End Function Experimente criar a sua prpria funo, de acordo com a orientao a seguir: 1 No editor do VBA, crie um novo mdulo usando o comando Inserir > Mdulo Inserir Mdulo. 2 Digite estas linhas de cdigo para criar a funo FACADA:

84 Treinamento avanado em Excel

Function FACADA (Emprstimo As Currency,_ Juros As Single, Parcelas as Integer) As _ Currency Esta funo precisa de trs argumentos: Emprstimo do tipo Currency (moeda), Juros do tipo simples e Parcelas do tipo inteiro FACADA = Emprstimo * (1 + Juros) ^ Parcelas Ao entrar com os valores de emprstimo, vai calcular o valor dos juros elevado ao nmero de parcelas. Todas as instrues sero armazenadas na funo conhecida como FACADA. End Function Vamos, agora, testar a funo criada: 1 No Excel, construa a seguinte planilha:

2 Clique sobre o boto Inserir funo Na janela que se abrir, no Inserir funo. campo Ou selecione uma categoria escolha a opo Todas categoria, oria odas:

Criando funes 85

3 A funo que voc criou (FACADA) vai estar listada no menu.

4 Procure-a e d um clique sobre ela. Depois, preencha os campos requeridos com os intervalos de clulas adequados, como mostra a figura a seguir:

D OK para ver o resultado.

86 Treinamento avanado em Excel

Personalizando o sistema
O Excel possui algumas barras de ferramentas e uma barra de menus padro para agilizar o trabalho. Mas voc tambm pode criar suas prprias barras e menus, reunindo nela as funcionalidades que costuma usar com mais freqncia. E mais: possvel criar novos botes para as macros que voc porventura tenha desenvolvido no Excel. como brincar com um jogo de montar, cujo resultado seja um ambiente de trabalho personalizado. Neste captulo, voc ver como criar e manipular barras de ferramentas e menus tanto por meio de linhas de cdigo quanto por meio de comandos.

ROTINA DE LIMPEZA DOS DADOS PARA NOVO CADASTRAMENTO


Nos captulos anteriores, voc associou aes aos controles do seu sistema de cadastro. Assim, o usurio pode entrar no formulrio e inserir os dados, os quais sero usados para preencher as planilhas correspondentes. O que falta, portanto, um mtodo que permita que, quando o usurio 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 apaream em branco para a digitao 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 boto cmdOK. Sub, 3 Na janela de cdigo, logo acima da instruo End Sub digite o seguinte bloco de instrues: Me.txtNome = Me.txtParcelas = Me.ltBVeculo.ListIndex = -1 Me.optVista = False Me.lblPreo = Personalizando o sistema 87

Me.lblVeculo = Me.chkNovo = False Me.txtNome = SetFocus

CRIANDO UMA BARRA DE FERRAMENTAS


Qualquer aplicativo do Windows pode conter vrias barras de ferramentas; voc pode, inclusive, criar uma, utilizando comandos ou por meio de cdigos. Criar uma nova barra de ferramentas utilizando comandos muito simples: 1 Em um novo documento do Excel, v ao menu Ferramentas > err ersonalizar sonalizar. fer err ersonalizar Barr Personalizar ou Exibir > Barras de ferramentas > Personalizar 2 Clique na guia Barr as de ferr amentas e em seguida, em Nova Barr fer amentas, err Nov 3 Na caixa Nome da barr a de ferramentas nomeie a sua barra barr fer amentas, err OK: como CADASTRO DE VECULOS e clique em OK

4 Clique na guia Comandos Comandos. 5 Selecione uma opo na caixa Categorias Repare que uma peCategorias. orias 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 arraste o comando desejado para Comandos, a barra de ferramentas que voc criou:

88 Treinamento avanado em Excel

7 Se houver necessidade de alterar o texto ou a figura do boto, basta pressionar o boto Modificar seleo Modificar seleo. 8 Aps 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 botes, voc pode construir uma barra de menus contendo diversos comandos. Mas lembre-se: aconselhvel manter em uso apenas a barra de menus padro 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 ramentas > Personalizar e clique na guia Barerr ersonalizar sonalizar, fer amentas. err ra de ferramentas 2 Clique no boto Nova e nomeie a nova barra de ferramentas. Clique Nov na guia Comandos e, na caixa Categorias selecione Menus internos Categorias, orias Menus internos nos. 3 A partir da caixa Comandos arraste o menu desejado para a Comandos, barra de ferramentas exibida. 4 Depois de adicionar todos os botes 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 Ferramentas > Per sonalizar e clique na guia Barerr ersonalizar sonalizar, err Anexar xar. fer amentas. ras de ferramentas Em seguida, clique em Anexar 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 anexar uma barra de ferramentas. Personalizando o sistema 89

ANEXANDO MACROS A BOTES


Uma possibilidade interessante a de acrescentar botes personalizados sua barra de tarefas. Voc pode, por exemplo, anexar uma macro a um boto personalizado. Veja como fazer isso: 1 Com a sua barra de ferramentas personalizada aberta, v at o ersonalizar sonalizar. menu Ferramentas > Personalizar err 2 D um clique na guia Comandos Comandos. Categorias, orias Macros os. 3 Na caixa Categorias selecione Macros 4 Clique em Personalizar boto e arraste-o para sua barra. ersonalizar Modificar seleo. 5 Para atribuir uma macro ao boto, pressione Modificar seleo Atribuir ibuir. 6 Clique sobre o nome da macro desejada, e, depois, em Atribuir

UTILIZANDO CDIGOS PARA ATIVAR A BARRA DE FERRAMENTAS


Agora vamos criar uma rotina que ative a barra de ferramentas personalizada. Esse cdigo deve ser associado ao procedimento orkbook kbook, Open do objeto Workbook para que possa agir assim que o arquivo for aberto. Para isso, siga este passo-a-passo: 1 Na janela de P r o j e t o d um duplo clique em ro o, EstaPasta_de_T balho. asta_de_Tr EstaPasta_de_Tra balho 2 Depois, clique sobre a caixa Objeto (que deve estar mostrando a opo (Geral) e selecione a opo Workbook (Geral) al)) orkbook kbook.

90 Treinamento avanado em Excel

3 Digite as seguintes instrues: Private Sub Workbook_Open() MsgBox Bom dia; este o sistema de _ cadastro de vendas. Mensagem de abertura Application.CommandBars(CADASTRO DE _ VECULOS).Visible = True Abrir barra de ferramentas caso esteja fechada. End Sub Essas instrues sero executadas toda vez que o arquivo de formulrio for aberto, exibindo uma mensagem ao usurio e tornando visvel 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 Ferramenerr ersonalizar sonalizar, tas > Personalizar ou de linhas de cdigo, desde que voc saiba o nome da barra em questo. Veja um exemplo de como desabilitar uma barra de ferramentas usando cdigo, o qual dever ser digitado no procedimento Close ou seja, ao fechar a pasta de trabalho: Close, 1 V at a janela de cdigo. Se ela no estiver com o objeto orkbook Objeto. Workbook ativado, acesse-o na caixa Objeto Sub, 2 Logo acima da instruo End Sub digite: Application.CommandBars(Standard).Visible = _ False Application.CommandBars(Formatting).Visible = _ False Ocultar as barras de ferramentas Padro e Formatao.

Personalizando o sistema 91

ALTERANDO A POSIO DE UMA BARRA DE FERRAMENTAS


Veja agora como mudar a posio de uma barra de ferramentas na tela. No exemplo a seguir, vamos posicionar a barra personalizada CADASTRO DE VECULOS na parte direita da rea de trabalho do Excel: 1 Novamente no cdigo do objeto Workbook logo acima da insorkbook kbook, truo End Sub digite: Sub, Sub MudaBarra() Application.CommandBars(CADASTRO DE _ VECULOS). Visible = True Torna visvel a barra de ferramentas CADASTRO DE VECULOS. Application.CommandBars(CADASTRO DE _ VECULOS). Position = msoBarRight Posiciona a barra de ferramentas do lado direito da janela. End Sub Voc tambm pode posicionar a barra de ferramentas em outros pontos da tela; basta alterar o valor do parmetro Position, como mostra a tabela abaixo: Position = msoBarLeft Position = msoBarRight Position = msoBarTop Position = msoBarFloating Posiciona a barra esquerda. Posiciona a barra direita. Posiciona a barra no topo. 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 instruo para definir as caractersticas de uma barra flutuante: .left = 500, .top = 200, .width = 100

92 Treinamento avanado em Excel

DESABILITANDO UM ITEM DA BARRA


Assim como podemos desabilitar uma barra de ferramentas, tambm possvel desabilitar apenas um ou mais itens de uma barra. Suponha que, no caso do seu sistema de cadastro, por exemplo, o usurio ainda no tenha inserido dados no formulrio. Nesse momento, seria interessante desabilitar o boto de impresso, uma vez que ainda no existe nada para imprimir. A seguir, veja um exemplo em que ocultamos o segundo boto da barra personalizada CADASTRO DE VECULOS: Sub, 1 Na janela de cdigo, logo acima da instruo End Sub digite: Sub Oculta2() Application.CommandBars(CADASTRO DE _ VECULOS). Controls(2).Enabled = False Oculta o boto 2 da barra de ferramentas. End Sub

INICIALIZANDO O SISTEMA
possvel 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 Workbook no procedimento Open o seorkbook kbook, Open, guinte cdigo: Application.CommandBars(CADASTRO DE VECULOS). _ Visible = True Torna a barra de ferramentas CADASTRO DE VECULOS ativa. MsgBox Bom trabalho! Exibe a mensagem Bom Trabalho!. frmVeculos.Show Exibe o formulrio frmVeculos.

Personalizando o sistema 93

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 clula da linha seguinte; Ativar o boto de rotao associado ao nmero de parcelas (spiParcelas). Mos obra!

Posicionando o cursor no primeiro registro em branco


At aqui, quando o usurio clicava sobre o boto OK do formulrio, o cursor era transportado clula nomeada como ini (no caso, a clula A5). Ou seja, cada novo cadastro sobrescrevia o anterior. Para que, em vez disso, o cursor seja posicionado na primeira clula em branco do sistema, faa o seguinte: 1 Na janela de cdigo,localize o comando associado ao boto cmdOK. 2 Procure a seguinte linha de cdigo (que est logo abaixo da instruo Sub cmdOK cmdOK): Application.Goto reference:=ini 3 Substitua essa linha pelo seguinte cdigo: Range(A1).Select Posiciona o cursor em A1. Selection.End(xlDown).Select Posiciona o cursor na primeira clula em branco aps A1. Selection.End(xlDown).Select Posiciona o cursor na primeira clula em branco na rea de dados. ActiveCell.Offset(1, 0).Range(A1).Select Move o cursor uma linha para baixo da atual.

94 Treinamento avanado em Excel

Ativando o controle spiParcelas


Para exibir o valor das parcelas toda vez que o usurio clicar sobre o boto spiParcelas, siga estes passos: 1 Na janela de cdigo, localize o controle spiParcelas. 2 Logo acima da instruo End Sub digite este cdigo: Sub, Private Sub spiParcelas_Change() txtParcelas.Text = Me.spiParcelas.Value End Sub

A obra completa
Parabns! Voc criou um sistema de cadastro de clientes funcional e associado a planilhas. Para que voc possa ter uma viso geral do seu programa, mostramos a seguir como deve ser o seu cdigo completo. Para facilitar a visualizao, removemos as linhas de comentrio. 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.ltBVeculo.Value ActiveCell.Offset(0, 1).Activate ActiveCell.Value = Me.lblPreo.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

ActiveCell.Value = Me.spiParcelas.Value Select Case txtParcelas Case 1 MsgBox(Somente 1 parcela) Case 2 MsgBox(Tome cuidado ... os _ juros vo aumentar.) Case 3 MsgBox(nossa, aqui no 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 = No End If ActiveCell.Offset(1, -5).Activate Me.txtNome = Me.txtParcelas = Me.ltBVeculo.ListIndex = -1 Me.optVista = False Me.lblPreo = Me.lblVeculo = Me.chkNovo = False Me.txtNome = SetFocus End Sub Nada mau, hein? E isso s o comeo. Com os conceitos apresentados neste livro, voc j tem subsdios para criar muitas outras aplicaes em VBA e para tornar-se um verdadeiro craque em Excel. At a prxima!

96 Treinamento avanado em Excel