Você está na página 1de 38

PROGRAMAO EM VBA

Programao em VBA

=4=

www.clinicadematematica.com.br

PR-TESTE DE EXCEL AVANADO

01) No Excel, quando uma clula contm a seqncia de caracteres #####, isto indica que: a) A frmula utilizada para gerar o valor da clula contm um erro genrico. b) A operao utilizada contm diviso por um valor nulo. c) Um endereo de clula na frmula faz referncia a uma clula inexistente. d) A largura da clula menor que o nmero de dgitos do valor nela contido. 02) O que uma pasta de trabalho do Excel ? a) Um arquivo temporrio. b) Uma parte de uma planilha. c) Um intervalo de clulas. d) Um conjunto de planilhas. 03) No Excel, uma lista ou banco de dados NO pode ser definido por: a) Um conjunto de linhas e colunas apenas com dados numricos. b) Um conjunto de slides importado do Microsoft PowerPoint. c) Um conjunto de linhas e colunas com qualquer tipo de dados. d) Um banco de dados importado do Microsoft Access. 04) No Excel, o que so, respectivamente, endereos relativos e absolutos ? a) So endereos de clulas que variam ao serem copiados ou movidos para outras clulas e endereos de clulas que se mantm fixos ao serem copiados ou movidos para outras clulas. b) So endereos de clulas em uma planilha e endereos de frmulas. c) So endereos de clulas que se mantm fixos ao serem copiados ou movidos para outras clulas e endereos de clulas que variam ao serem copiados ou movidos para outras clulas. d) So endereos de clulas em relao planilha onde foram definidos e endereos de clulas em relao pasta de trabalho onde foram definidos. 05) De um modo geral podemos dizer que a diferena entre os comandos Editar-Copiar e Editar-Recortar : a) Editar-Copiar tirar o texto de um lugar e colar em outro local. b) Editar-Recortar tirar o texto de um lugar e colar em outro local. c) Editar-Copiar e Editar-Recortar tem a mesma funo de mover o texto de um local para o outro. d) Editar-Copiar e Editar-Recortar tem a mesma funo de copiar o texto de um local para o outro. 06) O que so funes aninhadas no Excel ? a) So funes cujos argumentos so formados por outras funes. b) So funes que contm mais de um argumento. c) So funes lgicas (SE, OU, E, etc) cujos argumentos so formados por outras funes lgicas. d) So funes vinculadas a funes de outras planilhas. 07) Considerando que voc est trabalhando com o Excel, indique a afirmao ERRADA: a) Os textos so alinhados normalmente esquerda das clulas, a menos que sejam formatados de outra forma. b) As frmulas devem sempre ser iniciadas com o smbolo = (sinal de igual), com exceo das funes que no precisam do uso desse caractere. c) Os nmeros so alinhados normalmente direita das clulas, a menos que sejam formatados de outra forma. d) Tanto os textos como nmeros podem ser alinhados no centro das clulas. 08) No Windows 95 o Windows Explorer um a) dispositivo de edio de textos que permite explorar as vantagens do Word e do Excel b) software destinado a navegar pelos endereos da Internet

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

=5=

www.clinicadematematica.com.br

c) dispositivo conversor de programas fonte em programas executveis d) dispositivo para verificar a existncia de arquivos infectados por vrus de computador e) dispositivo que permite a visualizao de todos os arquivos em seu computador 09) Considerando que voc est editando um texto no MS-Excel 97, verso portugus, assinale a opo que indica o resultado correto para o comando mencionado. a) Ctrl+T faz a transferncia do texto para um arquivo a ser especificado. b) Alt+A exibe o menu de Ajuda. c) Alt+E abre o menu de Exibir. d) Ctrl+Z desfaz a ltima digitao. e) Ctrl+I abre a janela Imprimir. 10) Em relao ao MS Excel correto afirmar que a) no pode haver relao entre o valor de uma clula e os valores de outras clulas b) uma frmula de uma planilha pode fazer referncia a uma clula de outra planilha c) todas as colunas de uma mesma planilha devem ter a mesma largura d) os comandos Dividir e Congelar Painis tm a mesma funo e) uma ou mais colunas ocultadas so transferidas para um arquivo auxiliar devendo este ser acessado para a sua reexibio

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

=6=

www.clinicadematematica.com.br

Teclas de ATALHO
Tecla de Funo F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
Ajuda

SHIFT
O que isto ? (Explica o que um comando ou cone faz) Insere ou Edita um comentrio de clula Colar funo Localizar prxima (Repete o ltimo Localizar) Localizar (Exibe a caixa de dilogo Localizar) Move-se at o painel anterior

CTRL

ALT
Insere uma nova folha de grfico

CTRL+ SHIFT

ALT+ SHIFT
Insere uma nova planilha

Edita a clula ativa

Salvar Como Define um nome para uma clula ou regio Fechar (Fecha a janela aberta) Restaurar o tamanho da janela Move-se at a prxima janela de pasta de trabalho Mover a janela Redimensiona a janela Minimiza a pasta de trabalho Maximiza ou restaura a janela da pasta Insere uma FOLHA DE MACRO do Excel 4.0 Abrir Arquivo VBA (Exibe o Editor do VBA) Imprimir Mostra as MACROS existentes Move-se at a janela anterior da pasta de trabalho Sair (Fecha o Programa aberto) Cria nomes usando rtulos de linha e de coluna

Salvar

Cola um nome em uma frmula

Repete a ltima ao Ir para (seleciona uma clula ou regio) Move-se at o prximo painel Corretor Ortogrfico (Corrigir erros de Ortografia) Estende uma seleo Recalcula as frmulas das clulas das planilhas abertas MENU (Torna ativa a barra de menu) Cria um GRFICO INSTANTNEO Salvar como

Adiciona seleo Calcula a planilha ativa Equivale ao BOTO DIREITO do mouse Insere uma NOVA PLANILHA Salvar

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

=7=

www.clinicadematematica.com.br

OUTRAS TECLAS DE ATALHO


ALT+A = Abre o Menu Arquivo ALT+D = Abre o Menu Dados ALT+E = Abre o Menu Editar ALT+F = Abre o Menu Formatar ALT+I = Abre o Menu Inserir ALT+J = Abre o Menu Janela ALT+M = Abre o Menu Ferramentas ALT+U = Abre o Menu Ajuda ALT+X = Abre o menu Exibir CTRL+A = Abrir Arquivo CTRL+B = Salvar CTRL+C = Copiar CTRL+D = Copia o contedo de cima para a clula atual CTRL+F = Copia o contedo de cima para a clula atual permitindo a sua edio CTRL+I = Formata para Itlico CTRL+J = Alterna entre o resultado e a frmula CTRL+K = Insere Hyperlink CTRL+L = Localizar CTRL+N = Formata para Negrito CTRL+O = Abre uma Nova Pasta de Trabalho CTRL+P = Imprimir CTRL+T = Seleciona toda a Planilha Se tiver digitado "= nome de uma funo", abre o assistente da funo CTRL+U = Substituir CTRL+V = COLAR o contedo da memria na clula ativa CTRL+X = Recortar` CTRL+Y = Vai para uma clula ou regio especfica da Planilha (equivalente a F5) CTRL+Z = Desfazer CTRL+W = Fechar a janela da pasta de trabalho ativa (equivalente a CTRL+F4) CTRL+1 = Formatar Clulas CTRL+2 = Negrito CTRL+3 = Itlico CTRL+4 = Sublinhado CTRL+5 = Riscado CTRL+9 = Oculta as linhas atualmente ativas CTRL+PAGE DOWN = Vai para a prxima Planilha CTRL+PAGE UP = Vai para a Planilha Anterior CTRL+HOME = Vai para a clula A1 CTRL+END = Vai para a ltima clula escrita na planilha CTRL+TAB = Anda pelas guias dos menus CTRL+[ = Marca todas as clulas que originam a frmula da clula atual (antecedentes) CTRL+] = Marca todas as clulas que usam a clula atual em suas frmulas (precedentes) CTRL+* = Seleciona todas as clulas preenchidas, adjacentes clula atual

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

=8=

www.clinicadematematica.com.br

TABELA DINMICA
Tabela dinmica uma tabela interativa que resume uma grande quantidade de dados rapidamente ou os combina de tabelas diferentes. possvel girar suas linhas e colunas para ver resumos diferentes dos dados de origem, filtrar os dados exibindo pginas diferentes ou exibir os detalhes das reas de interesse. Voc pode criar uma Tabela dinmica a partir de uma lista ou banco de dados do EXCEL, de um banco de dados externo (Access, por exemplo), de vrias planilhas do EXCEL ou de outra Tabela dinmica. A Tabela dinmica resume dados usando uma funo de resumo que voc especifica, como: Soma, Contagem ou Mdia. Voc pode incluir subtotais e totais gerais automaticamente, ou usar suas prprias frmulas adicionando campos e itens calculados. Para criar uma Tabela dinmica, use o Assistente da tabela dinmica como guia para localizar e organizar os dados que voc deseja analisar.

CRIANDO UMA TABELA DINMICA DO EXCEL


1. Abra a pasta de trabalho onde voc deseja criar a Tabela dinmica. Se voc estiver baseando a Tabela dinmica em uma lista ou banco de dados do EXCEL, certifique-se de estar numa clula da lista ou do banco de dados. 2. Clique em Dados, na barra de menus. 3. Clique em Relatrio da tabela dinmica.

EXCLUINDO UMA TABELA DINMICA


1. No menu Tabela dinmica da barra de ferramentas Tabela dinmica, aponte para Selecionar e, em seguida, certifique-se de que Ativar seleo esteja pressionado. 2. Clique em uma clula na Tabela dinmica que voc deseja excluir. 3. Na barra de ferramentas Tabela dinmica, aponte para Selecionar no menu Tabela dinmica e, em seguida, clique em Tabela inteira. 4. No menu Editar, aponte para Limpar e, em seguida, clique em Tudo. Observao: Quando voc exclui uma Tabela dinmica os dados de origem no so afetados.

USANDO TOTAIS
Voc pode incluir totais gerais para os dados contidos em linhas e colunas da Tabela dinmica. O EXCEL exibe automaticamente os subtotais para o campo de linha ou coluna mais externo, quando voc cria dois ou mais campos de linha ou de coluna em uma Tabela dinmica. Para os campos de linha ou de coluna mais internos, o EXCEL exibe subtotais somente se voc som-los. Voc pode especificar a funo de resumo a ser usada para os subtotais.

FORMATANDO UMA TABELA DINMICA


Para manter as alteraes da formatao quando voc atualizar ou modificar o layout em uma Tabela dinmica, voc deve apontar para Selecionar no menu Tabela dinmica da barra de ferramentas Tabela dinmica e, em seguida, certifique-se de que Ativar seleo esteja pressionado antes de selecionar os dados que deseja formatar. 1. Selecione a parte da Tabela dinmica que voc deseja formatar. 2. Para aplicar as alteraes de formatao desejadas, use os botes na barra de ferramentas Formatao e os comandos do menu Formatar. 3. Para definir opes que afetem a formatao da Tabela dinmica, clique em uma clula na Tabela dinmica, clique em Opes no menu Tabela dinmica da barra de ferramentas Tabela dinmica e selecione as opes desejadas. Para obter Ajuda sobre uma opo, clique no ponto de interrogao na barra de ferramentas e, em seguida, clique na opo. Para formatar uma Tabela dinmica automaticamente, certifique-se de selecionar a opo AutoFormatao de tabela em Opes de formatao. Toda formatao manual que voc aplicar Tabela dinmica, antes ou depois de for-

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

=9=

www.clinicadematematica.com.br

matar automaticamente, ter prioridade sobre qualquer formatao aplicada com o comando AutoFormatao. Para remover toda a formatao de uma Tabela dinmica, desmarque a caixa de seleo AutoFormatao de tabela, selecione a Tabela dinmica inteira e aplique o estilo Normal. Para remover a formatao sempre que a Tabela dinmica for atualizada, desmarque a caixa de seleo Preservar formatao. Para aplicar a formatao a todas as pginas de uma Tabela dinmica com campos de pgina, selecione Tudo para cada campo de pgina e, em seguida, aplique a formatao. Se a Tabela dinmica possuir campos de pgina que consultam dados externos medida que voc seleciona cada item, exiba cada item de campo de pgina separadamente e, em seguida, aplique a formatao. Voc no pode aplicar formato condicional nem configurar uma validao de dados para as clulas em uma Tabela dinmica. O EXCEL no mantm as alteraes introduzidas em bordas de clulas quando voc altera o layout ou atualiza uma Tabela dinmica. Para usar clulas mescladas para todos os rtulos de coluna ou de linha mais externos na Tabela dinmica, clique em Opes no menu Tabela dinmica da barra de comandos Tabela dinmica e marque a caixa de seleo Mesclar rtulos. Antes de formatar uma Tabela dinmica em um arquivo criado em uma verso anterior do EXCEL, salve a pasta de trabalho como um arquivo do EXCEL. No menu Arquivo, clique em Salvar como e em Pasta de trabalho do EXCEL (*.xls) na caixa Salvar como tipo.

EXERCCIOS PROPOSTOS

01) Abrir a pasta TabelaDinamica.xls que est no diretrio C:\Meus Documentos\01-ApoioAluno e depois salvar na sua pasta de trabalho.

02) Criar uma Tabela Dinmica que mostre o resumo dos lanamentos financeiros do ms de Setembro do Banco Clnica. Esta tabela dinmica dever ter os seguintes parmetros: Em Pgina coloque as Agncias / Em Coluna coloque os Clientes / Em Linha coloque os Tipos de Conta / Em Dados coloque a Soma de Valores / Salve a tabela dinmica numa nova planilha e depois renomeie para Tabela Dinmica Setembro. Coloque esta nova planilha aps a planilha Banco Clnica.

03) Formate os valores da Tabela Dinmica clicando no cone Separador de Milhares.

04) Formate os ttulos das colunas clicando no boto Cliente e em Negrito, Itlico, Centralizado e Fonte Vermelha.

05) Formate os ttulos das linhas clicando no boto Tipo de Conta e em Negrito, Itlico e Fonte Vermelha.

06) Observando a Tabela Dinmica recm-criada responda s seguintes perguntas: a) Qual o total de aplicaes em Caderneta de Poupana de todas as agncias ? ______________ (Resp.: R$ 638.956,00) b) Qual o total aplicado em C/C por Clientes Novos da Agncia Central ? _________________ (Resp.: R$ 49.228,00) c) Na Agncia Zona Norte, qual o total aplicado por clientes antigos a Longo Prazo? ____________ (Resp.: R$ 125.374,00) 07) Criar um nova planilha que mostre todos os lanamentos da Agncia Zona Oeste, em aplicaes a Longo Prazo de clientes Antigos e que somaram R$ 10.000,00 (so 5 lanamentos). Renomear depois a planilha para ListaLongoPrazoOeste.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 10 =

www.clinicadematematica.com.br

08) V at a planilha Banco Clinica e altere o primeiro lanamento do dia 01/09 de R$ 340,00 para R$ 86.027,00. Volte para a planilha Tabela Dinamica Setembro e faa com que o Excel atualize os valores (estando em qualquer clula da Tabela Dinamica, basta clicar no cone Atualizar Dados ( ! )). Observe que o valor total de C/C, Clientes Antigos de todas as Agncias passou de R$ 314.313,00 para R$ 400.000,00.

09) Fazer uma nova Tabela Dinmica, baseada na tabela dinmica j feita (para economizar memria), com Agncia na Linha / Cliente na Pgina / Tipo de Conta na Coluna / Contagem de Valores em Dados / Observao: para mudar a Soma de Valores para Contagem de Valores, basta dar um clique duplo no boto Soma de Valores em Dados / Salve esta nova Tabela Dinmica na clula F1 da mesma Tabela Dinamica Setembro / Confirme se realmente so 5 lanamentos de Clientes Antigos na Agncia Zona Oeste em Aplicaes a Longo Prazo.

10) Usando a 2a. Tabela Dinmica (feita na questo anterior), faa aparecer todos os 10 lanamentos de Clientes Novos da Agncia Central das Aplicaes a Curto Prazo. Salve a nova planilha como ListaCurtoPrazoCentral.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 11 =

www.clinicadematematica.com.br

PROGRAMAO
Um Programa um conjunto de comandos com uma determinada sequncia lgica e que permite o processamento de determinada ao, proporcionando a realizao de uma tarefa. atravs do Programa que se processa a interface entre o usurio e o computador. Sem o programa o computador considerado uma mquina "burra", ou seja, o maquinrio (hardware) existe mas precisa Ter um "crebro" que o faa agir em determinadas situaes. O Programa Word, por exemplo, um conjunto de comandos que transforma o seu computador numa potente mquina de escrever; j o programa Excel, converte o mesmo computador numa espetacular planilha de clculos; e assim por diante. Quem cria o Programa o Programador.

SISTEMA
um conjunto de programas que realizam uma ou vrias tarefas pr-determinadas. O profissional que cuida dos Sistemas o Analista de Sistema.

LINGUAGENS DE PROGRAMAO
Existem vrias linguagens de programao: Visual Basic, Delphi, Turbo Pascal, Fox Pro e outras. So elas que interpretam o que falamos e convertem (traduzem) da nossa linguagem (humana) para a linguagem do computador (de mquina).

LGICA DE PROGRAMAO
um conjunto de comandos que executam determinadas aes, permitindo ao computador que se transforme numa mquina eficiente. Quando damos um determinado comando no computador, em linguagem humana, a linguagem de programao que traduz para o cdigo de mquina, normalmente cdigos numricos, para que aquele comando seja executado.

SEQUNCIA
Um programa uma sequncia lgica de comandos que executam determinadas aes. Esta sequncia tem que ser lgica, pois seno o programa no executar as aes esperadas. Exemplo: se fizermos um programa que ir calcular o nmero de dias j vividos por uma pessoa, primeiro temos que perguntar a data do seu nascimento, para depois calcular o nmero de dias. Quando voc vai fazer uma viagem de carro, voc toma atitudes como (a) fazer uma reviso no automvel; (b) abastecer; (c) ver os recursos financeiros; (d) viajar. Isto uma sequncia lgica. Na informtica, quando queremos elaborar um programa qualquer, precisamos determinar a sequncia lgica das aes e, depois, passar estas informaes para o computador. A lgica de programao a unio da sequncia com a linguagem. As sequncias no so, necessariamente, iguais. Cada pessoa pode agir de maneira diferente para fazer uma mesma ao. Por exemplo: para almoar voc poderia seguir a seguinte sequncia: a) Lavar as mos; b) Pegar o prato; c) Pegar os talheres; d) Servir a comida; e) Comer; f) Colocar o prato usado na pia; g) Escovar os dentes Algumas pessoas podem ter uma sequncia diferente para executar esta mesma ao. Por exemplo: algum pode pegar os talheres (c) antes de pegar o prato (b). Mas o programa ser executado da mesma forma. Assim , tambm, com um programa.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 12 =

www.clinicadematematica.com.br

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 13 =

www.clinicadematematica.com.br

VBA NO EXCEL

PLATAFORMA DE TRABALHO
Usaremos como plataforma para programar em VBA o aplicativo Excel. Por se tratar de um software mais popular, todos os exemplos podero ser aplicados na Planilha Eletrnica da Microsoft. Mas at o final do Curso tambm faremos alguns exemplos para uso no Access e no Word.

COMO CHEGAR NO VBA ATRAVS DO EXCEL


Abra o Excel; Clique em FERRAMENTAS Macro Editor do Visual Basic O atalho pelo teclado ALT-F11.

MDULOS
Mande inserir um Mdulo (Inserir Mdulo). Os mdulos so como o Editor de Textos Word. So neles que digitamos a linguem de programao (VBA) e que ser depois compilada na hora da execuo. Voc pode fazer um programa em cada Mdulo ou ter um Mdulo s para as Macros, outro para as Funes e outro para as macros de teclado, por exemplo.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 14 =

www.clinicadematematica.com.br

FUNES PERSONALIZADAS

CRIANDO NOSSAS PRPRIAS FUNES


Voc pode criar funes personalizadas no EXCEL usando a linguagem VISUAL BASIC. Para acessar o mdulo de programao da linguagem VBA pressione Ferramentas Macro Editor do Visual Basic (ou o atalho pelo teclado ALT+F11). Para fechar o mdulo VBA e voltar para a planilha, pressione ALT+Q. Para alternar entre o mdulo VBA e a planilha, clique no rodap dos arquivos abertos ou pressione ALT+TAB ou ainda ALT+F11.

CRIANDO A 1A FUNO
Vamos criar uma funo chamada RAIZC, que ir calcular a raiz cbica do nmero digitado. Pressione ALT+F11 para abrir o VBA. Clique em INSERIR MDULO. O VBA ir introduzir uma folha de mdulo vazia na tela. Para uma melhor visualizao, maximize a tela. Para iniciar uma funo personalizada com parmetros, digite FUNCTION, que uma palavra interna do VBA, seguido do NOME DA FUNO e do nome das variveis entre parnteses. O nome da funo e os nomes das variveis no podero conter espaos, no podero ser nome. Para este exemplo, digite os dados a seguir. Excel no faz distino entre letras maisculas e minsculas. FUNCTION RAIZC (RADICANDO) Quando voc pressionar <ENTER> Excel ir finalizar a funo com o comando END FUNCTION, ficando Function RAIZC (RADICANDO) I End Function Na parte interna da funo, endente o pargrafo, pressionando <TAB> e digite a expresso que ir calcular a raiz cbica do nmero digitado, ou seja, RAIZC = RADICANDO ^ (1/3) A sua funo vai ficar com o seguinte aspecto: Function RAIZC (RADICANDO) RAIZC = RADICANDO ^ (1/3) End Function Observe o jogo de cores do VB. Azul para nomes internos; preto para nomes definidos por ns, usurios; verde para comentrios, valores que no sero criticados pelo VB; e, finalmente, vermelho para erros encontrados. Se voc quiser fazer um comentrio medida que digita, use o apstrofe. VB no l nada aps este sinal. Experimente colocar os seguintes comentrios na sua funo: Function RAIZC(RADICANDO) 'nome da funo RAIZC = RADICANDO ^ (1 / 3) 'cria a frmula End Function 'encerra a funo Para testar a sua funo e verificar se ela est funcionando perfeitamente, volte planilha de trabalho clicando com o mouse na barra de status. Pegue uma clula vazia e digite =RAIZC(64) Excel ir responder 4 como resposta aps voc pressionar <ENTER>. Voc tambm pode usar o assistente de funo. Vamos calcular a raiz cbica de 27 usando o assistente de funo. V at uma clula vazia e pressione f(x).

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 15 =

www.clinicadematematica.com.br

Escolha a categoria DEFINIDA PELO USURIO (a ltima) e a funo RAIZC que acabamos de definir e depois OK. Digite 27 para a radicando. Observe que a resposta (3) j aparece no rodap da funo. Esta resposta ser transferida para a planilha quando voc pressionar <ENTER> ou clicar em OK.

CRIANDO UMA 2A FUNO


Agora vamos criar uma funo com 2 variveis, chamada RAIZN, que ir calcular a raiz n-sima de qualquer nmero. Volte para o mdulo clicando no mdulo (barra de status). Digite a seguinte funo, aps a funo j digitada RAIZC. Observe que no precisamos inserir 1 mdulo para cada funo. Numa mesma folha de mdulo podemos criar Function RAIZN (RADICANDO , INDICE) RAIZN = RADICANDO ^ (1/INDICE) End Function Experimente a funo que voc criou voltando para a planilha e calculando a raiz 10a de 1024 (a resposta 2).

FUNES CONDICIONADAS
Para criar uma funo condicionada, podemos usar o comando IF ... END IF, equivalente funo SE do assistente de funo do Excel. Vamos criar uma funo chamada IIRR, que analisa um salrio e devolve a alquota que a pessoa ir pagar, segundo os seguintes critrios: quem ganha at R$ 600 est isento; quem ganha acima disto paga 10% de imposto. Digite os seguintes dados: Function IIRR (SALARIO) If SALARIO <= 600 Then IIRR = "ISENTO" Else IIRR = "10%" End If End Function Faa um teste digitando, na planilha, o salrio de R$ 200 e R$ 900. As respostas sero ISENTO e 10% respectivamente.

FUNES COM OPERADORES MATEMTICOS


Vamos criar uma funo que calcule os juros de uma prestao em atraso. Digite no mdulo uma funo com o nome de MULTA com as seguintes caractersticas: Function MULTA(VALOR, ALIQUOTA) MULTA = VALOR * ALIQUOTA End Function Faa um teste com o valor de R$ 2.300 e a alquota de 17,3%. Voc dever encontrar uma multa de R$ 397,90.

EXERCCIOS PROPOSTOS
01) Criar uma funo no VB, denominada POT que pedir 2 parmetros (sugestes: BASE e EXPOENTE) e ir calcular qualquer potncia.

02) Faa uma funo que calcule e devolva a faixa de salrio em que a pessoa se encontra. Para quem ganha at R$ 1.000 enquadrar na Faixa 1; quem ganha acima, enquadrar na Faixa 2.

03) Crie uma funo chamada IR que calcule o IR a ser pago por um contribuinte. Se a base de clculo dele for menor ou igual a R$ 900, ele estar ISENTO; se ganhar mais de R$ 900 e menos de R$ 1.800, pagar 15% e deduzir R$ 135; se ganhar acima de R$ 1.800, pagar 27,5% e deduzir R$ 360. A funo j dever devolver o valor a ser pa-

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA go de imposto.

= 16 =

www.clinicadematematica.com.br

04) Um condomnio pediu a voc que elaborasse uma funo (sugesto: COND) para a planilha Excel que ir calcular o montante a ser pago por um condmino que est em atraso. As variveis sero: VALOR, TAXA_MS, DIAS_ATRASO e MULTA). A multa incide apenas sobre o principal, assim como os juros (ou seja, voc joga os juros sobre a multa).

05) Criar uma funo que calcule os juros simples (sugesto: JS) de uma aplicao, fornecido o capital, a taxa mensal, o prazo em dias e um COD. Esta funo devolver os Juros Simples se o COD for 1 ou o Montante Simples se o COD for 2 ou uma mensagem de erro (COD ERRADO) se o valor de COD for diferente de 1 ou de 2.

GABARITO
01) Function POT(BASE, EXPOENTE) POT = BASE ^ EXPOENTE End Function 02) Function FAIXA (SALARIO) If SALARIO <= 1000 Then FAIXA = "FAIXA 1" Else FAIXA = "FAIXA 2" End If End Function 03) Function IR(SALARIO) If SALARIO <= 900 Then IR = "ISENTO" Else If SALARIO <= 1800 Then IR = SALARIO * 0.15 - 135 Else IR = SALARIO * 0.275 - 360 End If End If End Function 04) Function COND(VALOR, TAXA_MES, DIAS_ATRASO, MULTA) COND = VALOR + VALOR * TAXA_MES * DIAS_ATRASO / 30 + VALOR * MULTA End Function 05) Function JS (CAPITAL, TAXA_MES, DIAS, COD) If COD = 1 Then JS = CAPITAL * TAXA_MES * DIAS / 30 ElseIf COD = 2 Then JS = CAPITAL+CAPITAL * TAXA_MES * DIAS / 30 Else JS = "COD ERRADO" End If End Function

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 17 =

www.clinicadematematica.com.br

MACROS DE TECLADO

LGICA DA MACRO DE TECLADO


O Excel permite que vrias macros sejam criadas usando-se o sistema de gravao automtica. A gravao convertida para o cdigo em VBA que pode ser depois criticado e alterado. A lgica da macro de teclado a seguinte: a) Defina o que voc quer; b) Execute as aes uma vez para treinar; c) Coloque o Excel no modo de gravao; d) Execute as aes mais uma vez, gravando; e) Comande o Excel para parar de gravar; f) Teste a macro para ver se ficou como desejado. As macros so convertidas em cdigo VBA e podem ser analisadas, estudadas e modificadas.

EXEMPLO 1
Fazer uma macro de teclado que pegue o contedo de uma clula e faa as seguintes aes: negrite, centralize na clula, mude a fonte para ARIAL NARROW Tamanho 12 pts e com a cor vermelha. Salve-a como MAC_FormataTexto.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 18 =

www.clinicadematematica.com.br

DECLARAO DE VARIVEIS

VARIVEL
Normalmente os programas que desenvolvemos faz uma interface com o usurio. Quando solicitamos alguns dados precisamos armazen-los em algum lugar da memria para uso posterior. Este lugar chamado de varivel. Varivel um local de armazenamento nomeado que pode conter dados, os quais podem ser modificados durante a execuo do programa. Cada varivel possui um nome que a identifica com exclusividade dentro de seu escopo. Um tipo de dados pode ser ou no especificado. Os nomes de varivel devem comear com um caractere alfabtico, devem ser exclusivos dentro do mesmo escopo, no podem ter mais de 255 caracteres e tambm no podem conter um ponto ou caractere de declarao de tipo incorporado. O VBA no exige que as variveis sejam declaradas em seus programas, porm uma segurana quanto ao uso errado da grafia de uma delas, quando optamos por tornar a declarao obrigatria (ao usarmos o comando Option Explicit).

O COMANDO "OPTION EXPLICIT"


utilizada no nvel de mdulo (um conjunto de declaraes seguidas de procedimentos) para forar a declarao explcita de todas as variveis desse mdulo. Sua Sintaxe : Option Explicit e ela dever ser colocada na 1 linha do mdulo (antes de qualquer procedimento). Quando Option Explicit aparece em um mdulo, voc deve declarar explicitamente todas as variveis utilizando as instrues Dim, Private, Public, ReDim ou Static. Se a declarao no for feita, VBA acusar um erro em tempo de compilao (perodo durante o qual o cdigo-fonte traduzido em cdigo executvel). Se voc no utilizar a instruo Option Explicit, todas as variveis no declaradas sero do tipo Variant, a menos que o tipo padro seja especificado com uma instruo Deftipo. Recomendamos que voc utilize Option Explicit para evitar a digitao incorreta do nome de uma varivel existente ou para evitar confuso no cdigo em que o escopo da varivel no esteja claro.

ESCOPO
Define a visibilidade de uma varivel, um procedimento ou objeto. Por exemplo, uma varivel declarada como Public visvel a todos os procedimentos de todos os mdulos em um projeto de referncia direta, a menos que Option Private Module esteja ativo. Quando Option Private Module est ativo, o prprio mdulo privado e portanto no est visvel a projetos de referncia. As variveis declaradas em um procedimento so visveis somente dentro do procedimento e perdem seu valor entre chamadas, a menos que sejam declaradas Static. Exemplo de um programa com o comando Option Explicit: Option explicit Dim MinhaVar MeuInt = 10 MinhaVar = 10 Fora a declarao de varivel explcita Declara a varivel Varivel no declarada gera erro Varivel declarada no gera erro

DIM
Declara variveis e aloca espao de armazenamento.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 19 =

www.clinicadematematica.com.br

PRINCIPAIS COMANDOS

ACTIVATE
Este mtodo ativa a pasta de trabalho. Sintaxe: Workbooks(MinhaPasta).Activate

CLEARCONTENTS
Limpa as frmulas do intervalo. Limpa os dados de um grfico mas deixa a formatao. Sintaxe: expresso.ClearContents Onde expresso (obrigatria) uma expresso que retorne um objeto Chart ou Range. Exemplo: Worksheets(1).Range("Regiao").ClearContents Limpa o contedo do intervalo chamado "Regiao" da 1a. planilha.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 20 =

www.clinicadematematica.com.br

WORKSHEETS

O COMANDO WORKSHEETS
com este comando que voc manipula as planilhas da sua pasta de trabalho. Pode-se abreviar escrevendo apenas Sheets.

EXERCCIOS
01) Faa um programa que ative a planilha Plan2 usando o comando Activate (que torna objetos ativos) e selecione as clulas B5:C7 com o comando Select.

02) Fazer um programa que selecione as clulas A1:C3 de Plan1 e, em seguida, faa de B2 a clula ativa.

03) Usando o comando Add faa com que seja inserida uma nova planilha na Pasta atual (Worksheets.Add).

04) Faa uma macro que se desloque para a 2 Planilha.

05) Faa um programa que insira na clula atual a quantidade de planilhas da Pasta de Planilhas Ativa.

06)

Faa um programa que insira ter:=Worksheets(Worksheets.Count).

uma

planilha

no

final

da

pasta

atual

(Worksheets.Add.Move

af-

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 21 =

www.clinicadematematica.com.br

ACTIVECELL

O COMANDO ACTIVECELL
Retorna um objeto Range representando a clula ativa da janela ativa (a janela visvel) ou da janela especificada. Se a janela no estiver exibindo uma planilha, essa propriedade falhar. Somente para leitura. Quando voc no especifica um qualificador de objeto, essa propriedade retorna a clula ativa da janela ativa. Tenha cuidado de distinguir entre clula ativa e seleo. A clula ativa uma nica clula dentro da seleo atual. A seleo pode conter mais de uma clula, mas somente uma a clula ativa. Exemplo: Todas as expresses seguintes retornam a clula ativa, sendo todas equivalentes. ActiveCell Application.ActiveCell ActiveWindow.ActiveCell Application.ActiveWindow.ActiveCell

EXERCCIOS
01) Faa um programa que capture o contedo da clula atual e o devolva, na mesma clula, com a frase: O contedo desta clula era .... Supondo que na clula atual havia o nmero 30, a macro, ao ser executada, dever substituir o contedo da clula atual (30) por (O contedo desta clula era 30). Teste o programa, depois de pronto, digitando numa clula o seu nome e vendo o resultado. 02) Faa aparecer na clula atual o seu nome.

03) Usando o comando Date faa com que aparea na clula atual a Data de Hoje (antes, atualize a data do seu computador).

04) usando o comando Now faa com que aparea na clula atual a Data e a hora atuais.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 22 =

www.clinicadematematica.com.br

RANGE

O OBJETO RANGE
Range (faixa) um dos objetos que fazem o trabalho pesado no Excel. Normalmente antes de qualquer na Planilha, temos que identificar a rea. Um objeto Range representa uma clula, uma fileira, uma coluna, uma seleo de clulas, contendo um ou mais blocos contguos de clulas ou uma faixa em 3D.

PROPRIEDADE RANGE
Use Range (argumento), onde argumento nomeia o intervalo, para retornar um objeto Range representando uma nica clula ou um intervalo de clulas.

EXEMPLO 1
O exemplo seguinte coloca o valor da clula A1 da planilha Plan1 na clula A5 da mesma planilha. Worksheets ("Plan1").Range("A5").Value = _ Worksheets("Plan1").Range("A1").Value

EXEMPLO 2
O exemplo seguinte preenche o intervalo A1:H8 com nmeros randmicos definindo a frmula para cada clula do intervalo. Quando usada sem um qualificador de objeto (um objeto esquerda do ponto), a propriedade Range retorna um intervalo da planilha ativa. Se a planilha ativa no for uma planilha de trabalho, o mtodo falhar. Use o mtodo Activate para ativar uma planilha antes de usar a propriedade Range sem um qualificador de objeto explcito. Worksheets("Plan1").Activate Range("A1:H8").Formula = "=rand()"

EXEMPLO 3
O exemplo seguinte limpa o contedo do intervalo chamado "Regiao" da 1a. planilha. Worksheets(1).Range("Regiao").ClearContents Se voc usar um argumento de texto para o endereo do intervalo, voc ter que especificar o endereo em notao de estilo A1 (voc no poder usar a notao de estilo L1C1).

PROPRIEDADE CELLS
Use Cells(linha, coluna) onde linha o ndice da linha e coluna o ndice da coluna, para retornar uma nica clula.

EXEMPLO 4
O exemplo seguinte define o valor da clula A1 da primeira planilha como 24. Worksheets(1).Cells(1, 1).Value = 24

EXEMPLO 5
O exemplo seguinte define a frmula para a clula A2 da planilha ativa. ActiveSheet.Cells(2, 1).Formula = "=sum(B1:B5)"

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 23 =

www.clinicadematematica.com.br

EXEMPLO 6
Embora voc tambm possa usar Range("A1") para retornar a clula A1, pode haver ocasies em que a propriedade Cells seja mais conveniente porque voc pode usar uma varivel para a linha ou coluna. O exemplo seguinte cria cabealhos de coluna e linha na Plan1. Observe que aps a planilha ser ativada, a propriedade Cells pode ser usada sem uma declarao explcita de planilha (ela retorna uma clula da planilha ativa). Sub Range_Q06() Worksheets("Plan1").Activate 'Torna Plan1 Ativa For Ano = 1 To 5 Cells(1, Ano + 1).Value = 1990 + Ano Next Ano For Linha = 1 To 4 Cells(Linha + 1, 1).Value = "Q" & Linha Next Linha End Sub

EXEMPLO 7
Apesar de voc poder usar funes de cadeia de caracteres do VBA para alterar as referncias de estilo A1, muito mais fcil (e uma prtica de programao muito melhor) usar a notao CELLS(1,-1). Use expresso.Cells(linha, coluna), onde expresso uma expresso que retorne um objeto Range, e linha e coluna so relativas ao canto superior esquerdo do intervalo, para retornar parte de um intervalo. O exemplo seguinte define a frmula para a clula B6. Worksheets(1).Range("A5:D10").Cells(2, 2).Formula = "=rand()"

RANGE E CELLS
Use Range(clula1, clula2), onde clula1 e clula2 so objetos Range que especificam as clulas inicial e final, para retornar um objeto Range.

EXEMPLO 8
O exemplo seguinte define o estilo da linha da borda das clulas A1:J10. With Worksheets(1) .Range(.Cells(1, 1), _ .Cells(10, 10)).Borders.LineStyle = xlThick End With Observe o ponto na frente de cada ocorrncia da propriedade Cells. O ponto ser obrigatrio se o resultado da instruo With anterior for aplicado propriedade Cells nesse caso, para indicar que as clulas esto na planilha um (sem o ponto, a propriedade Cells retornaria as clulas da planilha ativa).

PROPRIEDADE OFFSET
Use Offset(linha, coluna), onde linha e coluna so os deslocamentos de linha e coluna, para retornar um intervalo em um deslocamento especificado de um outro intervalo.

EXEMPLO 9
O exemplo seguinte seleciona a clula que se encontra 3 linhas abaixo e 1 coluna direita da clula do canto superior esquerdo da seleo atual. Voc no pode selecionar uma clula que no esteja na planilha ativa, portanto, voc precisa ativar primeiro a planilha. Sheets("Plan1").Activate 'Torna Plan1 Ativada Selection.Offset(3, 1).Range("A1").Select

MTODO UNION
Use Union(intervalo1, intervalo2, ...) para retornar intervalos de vrias reas, isto , intervalos compostos de dois ou mais blocos contguos de clulas.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 24 =

www.clinicadematematica.com.br

EXEMPLO 10
O exemplo seguinte cria um objeto definido como a unio de intervalos A1:B2 e C3:D4 e, em seguida, seleciona o intervalo definido. Dim r1 As Range, r2 As Range Dim myMultiAreaRange As Range Worksheets("Plan1").Activate Set r1 = Range("A1:B2") Set r2 = Range("C3:D4") Set myMultiAreaRange = Union(r1, r2) myMultiAreaRange.Select

EXERCCIOS
01) Faa uma macro que grave Bahia na clula B10.

02) Faa uma macro que grave o contedo da clula atual na clula C7.

03) Faa uma macro que grave o contedo da clula A1 na clula atual.

04) Faa uma macro que pegue o nmero da clula atual e grave as seguintes expresses: na clula D5 dever aparecer O nmero ...; em D6 dever aparecer o seu dobro ...; e, finalmente, em D7 dever aparecer e o seu triplo ....

05) Faa uma macro que preencha todas as clulas do intervalo A5:F10 da planilha Plan2 com palpites para uma Loteria que sorteia dezenas de 0 a 60. Para testar a macro, execute-a a partir de Plan1.

GABARITO
01) Sub Range_Q01 () Range(B10) = Bahia End Sub 02) Sub Range_Q02 () Range(C7) = ActiveCell End Sub 03) Sub Range_Q03 () ActiveCell = Range(A1) End Sub 04) Sub Range_Q04 Range(D5) Range(D6) Range(D7) End Sub () = O nmero & ActiveCell = O seu dobro & ActiveCell * 2 = E o seu triplo & ActiveCell * 3

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA 05)

= 25 =

www.clinicadematematica.com.br

Sub Range_Q05 () Sheets("Plan2").Activate Range("A5:F10").Formula = "=int(rand()*60)" End Sub

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 26 =

www.clinicadematematica.com.br

INPUTBOX

O COMANDO INPUTBOX
Exibe um aviso em uma caixa de dilogo, aguarda at que o usurio insira texto ou clique em um boto e retorna um String com o contedo da caixa de texto. Sintaxe: InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) Prompt = Obrigatrio. Expresso de seqncia de caracteres exibida como mensagem na caixa de dilogo. O comprimento mximo de prompt de aproximadamente 1024 caracteres, dependendo da largura dos caracteres utilizados. Se prompt consistir em mais de uma linha, voc poder separar as linhas utilizando um caractere de retorno de carro (Chr(13)), um caractere de alimentao de linha (Chr(10)) ou uma combinao de caracteres de retorno de carro e alimentao de linha (Chr(13) & Chr(10)) entre cada linha. Title = Opcional. Expresso de seqncia de caracteres exibida na barra de ttulo da caixa de dilogo. Se voc omitir title, o nome do aplicativo ser inserido na barra de ttulo. Default = Opcional. Expresso de seqncia de caracteres exibida na caixa de texto como resposta padro se nenhuma entrada for fornecida. Se voc omitir default, a caixa de texto ser exibida vazia. Xpos = Opcional. Expresso numrica que especifica, em twips, a distncia horizontal da extremidade esquerda da caixa de dilogo em relao extremidade esquerda da tela. Se xpos for omitido, a caixa de dilogo ser centralizada horizontalmente. Ypos = Opcional. Expresso numrica que especifica, em twips, a distncia vertical da extremidade superior da caixa de dilogo em relao ao topo da tela. Se ypos for omitido, a caixa de dilogo ser posicionada na vertical a aproximadamente um tero da extremidade inferior da tela. Helpfile = Opcional. Expresso de seqncia de caracteres que identifica o arquivo de Ajuda a ser utilizado para fornecer ajuda sensvel ao contexto relativa caixa de dilogo. Se helpfile for fornecido, context tambm dever ser fornecido. Context = Opcional. Expresso numrica que o nmero de contexto da Ajuda atribudo ao tpico da Ajuda apropriado pelo autor da Ajuda. Se context for fornecido, helpfile tambm dever ser fornecido.

EXERCCIOS
01) Faa uma macro que solicite o nome da pessoa, atravs da Caixa InputBox e armazene a frase O nome ... na clula atual.

02) Faa uma macro que solicite um valor, atravs da Caixa InputBox e armazene em A10 = O nmero dado ...; e em A11 = A sua raiz quadrada ...; e em A12 = E a sua raiz cbica ....

1)

Faa uma macro que solicite ao usurio que insira um valor entre 1 e 3. A varivel MeuValor dever conter o valor inserido pelo usurio se o usurio clicar em OK ou pressionar a tecla ENTER. O Valor padro dever ser 2. A tela dever vir na posio horizontal = 100 e vertical = 500. Coloque como ttulo a Clnica de Matemtica;

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 27 =

www.clinicadematematica.com.br

COMANDOS IF

O COMANDO IF
Executa condicionalmente um grupo de instrues, dependendo do valor de uma expresso. Sintaxe: If condio Then [instrues] [Else instrueselse] Observe que na sintaxe de 1 linha apenas, no h necessidade de End If. Voc tambm pode utilizar a sintaxe de formato de bloco: If condio Then [instrues] [ElseIf condio-n Then [instrueselseif] ... [Else [instrueselse]] End If A instruo If...Then...Else possui as partes a seguir: Condio = Obrigatria. Uma expresso numrica ou expresso de seqncia de caracteres que avaliada como True ou False. Se condio for Null, ser tratada como False; Uma expresso do formato TypeOf nomedoobjeto Is tipodoobjeto. O nomedoobjeto qualquer referncia a objeto e tipodoobjeto qualquer tipo de objeto vlido. A expresso ser True se nomedoobjeto for o tipo de objeto especificado por tipodoobjeto; caso contrrio, ser False. Voc pode utilizar o formato de uma s linha (primeira sintaxe) para testes simples e curtos. Entretanto, o formato de bloco (segunda sintaxe) proporciona mais estrutura e flexibilidade do que o formato de uma s linha e normalmente mais fcil de ler, manter e depurar. Observao Com o formato de uma s linha possvel ter mltiplas instrues executadas como resultado de uma deciso If...Then. Todas as instrues devem estar na mesma linha e separadas por dois-pontos, como na seguinte instruo: If A > 10 Then A = A + 1 : B = B + A : C = C + B Uma instruo If em formato de bloco deve ser a primeira em uma linha. As partes Else, ElseIf, e End If da instruo podem ter somente um nmero de linha ou rtulo de linha precedendo-as. O If em bloco deve terminar com uma instruo End If. Para determinar se uma instruo ou no If em bloco, examine o que vem em seguida palavra-chave Then. Se qualquer coisa exceto um comentrio aparecer depois de Then na mesma linha, a instruo ser tratada como instruo If de uma s linha. As clusulas Else e ElseIf so opcionais. Voc pode ter tantas clusulas ElseIf em um bloco If quantas desejar, mas nenhuma pode aparecer depois de uma clusula Else. Instrues If em bloco podem ser embutidas, isto , contidas uma dentro da outra. Executando um If em bloco (segunda sintaxe), condio testada. Se condio for True, as instrues seguintes a Then so executadas. Se condio for False, cada condio ElseIf (se houver) ser por sua vez avaliada. Quando uma condio True for encontrada, as instrues imediatamente subseqentes Then associada so executadas. Se nenhuma das condies ElseIf forem True (ou se no houver clusulas ElseIf), as instrues subseqentes a Else so executadas. Depois da execuo das instrues subseqentes a Then ou Else, a execuo continua com a instruo subseqente a End If. Dica: Select Case pode ser mais til na avaliao de uma expresso nica com diversas aes possveis. Entretanto, a clusula TypeOf nomedoobjeto Is tipodoobjeto no pode ser utilizada com a instruo Select Case.

EXERCCIOS
01) Faa uma macro que avalie o nmero contido na clula A10 e colocar a sua classificao em B10. Se for at 5, classificar como Pequeno. Caso contrrio, classificar como Grande.

02) Faa uma macro que solicite um nmero entre 50 e 100, usando o comando inputbox. Se o nmero digitado estiver entre 50 e 75, colocar na clula atual Faixa 1; se o nmero for maior que 75, at 100, colocar na clula atual Faixa 2; Se a pessoa digitar qualquer outro nmero fora desta faixa, colocar na clula atual Erro.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 28 =

www.clinicadematematica.com.br

03) Usando a funo IsNumeric (que retorna um valor Boolean que indica se uma expresso pode ser avaliada como um nmero), faa uma macro que solicite do usurio a idade dele e calcule quantos dias ele j viveu; mas a macro dever analisar o nmero digitado e dar uma mensagem de erro na clula atual se o usurio no digitar um nmero.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 29 =

www.clinicadematematica.com.br

LAOS FOR

LAOS
So amarraes feitas nos programas para que possamos executar instrues um determinado nmero de vezes. No exemplo a seguir, vamos fazer um programa que ir gerar os nmeros da MEGA SENA. Option Explicit Sub Megasena() 'Declarao de Variveis Dim Contador As Integer Dim Palpite As Integer Dim Teste As Integer Dim Numero Dim Erro Worksheets("Loteria").Activate Range("A1:H100").Value = "" PedeDezena: Numero = InputBox("Quantas dezenas voc deseja?", "Megasena") If Numero = "" Then Exit Sub If IsNumeric(Numero) = False Then MsgBox "Nmero de dezenas invlido! Redigite!", vbCritical GoTo PedeDezena End If Numero = Val(Numero) If Numero < 6 Or Numero > 20 Then MsgBox "ERRO: A quantidade de dezenas dever estar enter 6 e 20", vbRetryCancel GoTo PedeDezena End If Range("A4").Value = "Palpites para a Megasena" Range("A4").Select For Contador = 1 To Numero ActiveCell.Offset(0, 0).Select GeraDezena: Randomize Palpite = Int(Rnd() * 60) If Palpite = 0 Then GoTo GeraDezena 'Testa se est repetido For Teste = 1 To Contador If Palpite = Range("A4").Offset(Teste, 1) Then GoTo GeraDezena Next Palpite = Range("A4").Offset(Teste, 1) 'Grava na tela ActiveCell.Offset(Contador, 0).Value = "Dezena " & Contador ActiveCell.Offset(Contador, 1).Value = Palpite Next 'Ordena registros Range("B5:B25").Select Selection.Sort Key1:=Range("B5"), Order1:=xlDescending Range("A1").Select End Sub

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 30 =

www.clinicadematematica.com.br

OFFSET

O COMANDO OFFSET
Faz com que voc estabelea uma relao com as clulas do Excel, sem definio-las com exatido. Pode ser usada combinada com o comando ACTIVECELL.

EXERCCIOS
01) Criar um tipo de FORMULRIO de entrada de dados com o comando INPUTBOX. Fazer as crticas dos valores digitados. Sub BD_1() 'Declarao de variveis Dim Titulo As String Dim Nome As String Dim Formacao As String Dim Idade As Integer Dim Continua As Integer Dim Informa As String 'Entrada de dados Titulo = "Banco de Dados" Informa = "Dados cadastrados com sucesso!" Informa = Informa & Chr(10) & Chr(10) & "Deseja incluir novo registro?" Inicio: PedeNome: Nome = InputBox("Digite o nome", Titulo) If Nome = "" Then MsgBox "Digite o nome!" GoTo PedeNome End If PedeFormacao: Formacao = InputBox("Digite a formao", Titulo) If Formacao = "" Then MsgBox "Digite a formao!" GoTo PedeFormacao End If PedeIdade: Idade = InputBox("Digite a idade", Titulo) If IsNumeric(Idade) = False Then MsgBox "Digite uma idade vlida!" GoTo PedeIdade End If 'Identificar primeira clula vazia Worksheets("BDados").Activate Range("A5").Select Do ActiveCell.Offset(1, 0).Select If ActiveCell.Value = "" Then Exit Do End If

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA Loop

= 31 =

www.clinicadematematica.com.br

'Armazena dados ActiveCell.Value = Nome ActiveCell.Offset(0, 1).Value = Formacao ActiveCell.Offset(0, 2).Value = Idade Continua = MsgBox(Informa, vbYesNo + vbExclamation, Titulo) If Continua = vbYes Then GoTo Inicio Else Exit Sub End Sub

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 32 =

www.clinicadematematica.com.br

FORMULRIOS

CRIAO DE FORMULRIOS
possvel criar Formulrios de entrada de dados no VBA para uso no EXCEL. Os comandos so similares aos das macros. Observe o exemplo a seguir, que cria um formulrio para entrar dados no Banco de Dados do Excel. Option Explicit Sub Formulario() '1) Declarao de variveis ----------------------------------------Dim Dialogo, cxBoxOK, vNome, vSexo, vFormacao '2) Diminui o nome da caixa de dilogo -----------------------------Set Dialogo = DialogSheets("Caixa1") '3) Estabelece o incio do programa --------------------------------Inicio: '4) Limpa a caixa de dilogo (Formulrio) --------------------------Dialogo.EditBoxes("cxNome").Text = "" '5) Exibe a caixa de dilogo ---------------------------------------cxBoxOK = Dialogo.Show '6) Fecha a caixa de dilogo se pressionar ESC ---------------------If Not cxBoxOK Then Exit Sub '7) Recebe os dados da caixa de dilogo ----------------------------vNome = Dialogo.EditBoxes("cxNome").Text Recebe o nome If Dialogo.OptionButtons("OpcaoM").Value = xlOn Then Recebe o sexo vSexo = "Masculino" Else vSexo = "Feminino" End If '7c) Recebe a formao vFormacao = Worksheets("Formacao").Range("D3").Value '8) Armazena as variveis '8a) Vai para a primeira linha vazia do banco de dados Worksheets("BDados2").Activate Range("A5").Select Do ActiveCell.Offset(1, 0).Select If ActiveCell.Value = "" Then Exit Do Loop ActiveCell.Value = vNome ActiveCell.Offset(0, 1).Value = vSexo ActiveCell.Offset(0, 2).Value = vFormacao '9) Repete at cancelar GoTo Inicio End Sub Fora a declarao das variveis nesta mdulo

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 33 =

www.clinicadematematica.com.br

EXERCCIOS
Sub BD_2() 'Declara variveis Dim Dialogo, cxBoxOK, vNome, vSexo, vFormacao 'Diminui o nome da caixa de dilogo Set Dialogo = DialogSheets("Caixa1") 'Estabelece o incio do programa Inicio: 'Limpar caixa de dilogo Dialogo.EditBoxes("cxNome").Text = "" 'Exibir a caixa de dilogo cxBoxOK = Dialogo.Show 'Fecha a caixa de dilogo se pressionar ESC If Not cxBoxOK Then Exit Sub 'Recebe os dados da caixa de dilogo '1) Recebe o nome vNome = Dialogo.EditBoxes("cxNome").Text '2) Recebe o sexo If Dialogo.OptionButtons("OpcaoM").Value = xlOn Then vSexo = "Masculino" Else vSexo = "Feminino" End If '3) Recebe a formao vFormacao = Worksheets("Formacao").Range("D3").Value 'Armazenar as variveis 'Vai para a primeira linha vazia do banco de dados Worksheets("BDados2").Activate Range("A5").Select Do ActiveCell.Offset(1, 0).Select If ActiveCell.Value = "" Then Exit Do Loop ActiveCell.Value = vNome ActiveCell.Offset(0, 1).Value = vSexo ActiveCell.Offset(0, 2).Value = vFormacao 'Repete at cancelar GoTo Inicio End Sub

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 34 =

www.clinicadematematica.com.br

SENHAS DE SEGURANA

SENHA
Uma palavra, frase ou seqncia de caracteres que deve ser novamente inserida para se ter acesso a uma clula, grfico, objeto, planilha, pasta de trabalho, pasta ou arquivo protegido. No EXCEL, uma senha pode conter at 255 caracteres com qualquer combinao de letras, nmeros, espaos e smbolos. medida que voc digita a senha, o EXCEL exibe um asterisco (*) para cada caractere que voc digitar. Como as senhas fazem distino entre maisculas e minsculas, voc deve digitar as letras maisculas e minsculas corretamente ao definir e inserir senhas.

SENHA DE PROTEO
A senha de proteo aquela que protege a pasta de trabalho inteira, ou seja, o arquivo s ser aberto se a senha for informada corretamente. Voc pode colocar uma senha de proteo na abertura de um arquivo no Excel, ou seja, s poderemos abrir o arquivo se soubermos a senha. Quando voc cria uma senha, deve copi-la e guard-la em um local seguro. Se voc perder a senha, no poder abrir a pasta de trabalho protegida por senha nem ter acesso aos dados nela contidos. Vamos fazer isso com a nossa pasta CursoExcelAvancado, que estamos usando desde o incio do curso (se voc no tem ainda esta pasta, crie uma). Estando com a pasta aberta, proceda os seguintes comandos: Arquivo Salvar Como (ou F12) Opes Senhas de Proteo

OBSERVAES
Se a verso do seu Office 2000, ento proceda os seguintes comandos: Arquivo Salvar Como (ou F12) Ferramentas (Barra de Ferramentas) Opes Gerais Senhas de Proteo Na caixa Senha de proteo, digite uma senha e clique em OK. As senhas coincidem maisculas e minsculas. Digite a senha exatamente como deseja que os usurios a insiram, incluindo letras maisculas e minsculas. Na caixa Reinsira a senha para prosseguir, digite a senha novamente e clique em OK. Clique em Salvar. Se for solicitado, clique em Sim para substituir a pasta de trabalho existente pela pasta de trabalho aberta.

SENHA DE GRAVAO
Voc pode colocar uma senha apenas para proteger a planilha original de gravaes, ou seja, voc permite que qualquer pessoa abra a Pasta, pode at fazer alteraes, mas no conseguir salvar com o mesmo nome, a no ser que a pessoa digite a senha. O usurio poder, entretanto, salvar as alteraes feitas com outro nome.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 35 =

www.clinicadematematica.com.br

Estando com a pasta aberta, proceda os seguintes comandos: Arquivo Salvar Como (ou F12) Opes Senhas de Proteo Se a verso do seu Office 2000, ento proceda os seguintes comandos: Arquivo Salvar Como (ou F12) Ferramentas (Barra de Ferramentas) Opes Gerais Senhas de Proteo Na caixa Senha de gravao, digite uma senha e clique em OK. Na caixa Reinsira senha para modificar, digite a senha novamente e, em seguida, clique em OK. Clique em Salvar. Se for solicitado, clique em Sim para substituir a pasta de trabalho existente pela pasta de trabalho aberta. Observaes: Voc pode salvar as alteraes em uma pasta de trabalho protegida por senha sem usar a senha, abrindo primeiro a pasta de trabalho como somente leitura. Faa as alteraes desejadas na pasta de trabalho e, em seguida, salve a pasta com um nome diferente. A pasta de trabalho salva com um novo nome no necessita de uma senha e estar disponvel para edio.

SENHAS NAS CLULAS


Voc pode permitir que os usurios abram a sua Pasta de Trabalho e possam alterar dados e salv-los. Entretanto, no podero alterar determinadas clulas, como por exemplo, clulas que contenham frmulas. Vamos supor que voc queira proteger apenas as clulas A1:B10. Para proteger, destrave quaisquer clulas que voc deseja poder alterar depois que proteger a planilha. Como esta parte um pouco complicada e como, por padro, todas as clulas de qualquer planilha vm protegidas, a sugesto que primeiro voc destrave todas elas e depois trave apenas as que voc quer proteger. Faa assim: Marque toda a planilha (CTRL-T). Depois clique em Formatar / Clulas (ou CTRL-1) / Proteo / Travada. Destrave todas as clulas marcadas Agora marque as clulas que voc deseja proteger e digite novamente os comandos: Formatar / Clulas (ou CTRL-1) Proteo / Travada. Marque travada para as clulas. Quando voc protege a planilha, as clulas e os objetos grficos que voc no destravou permanecem protegidos e no podero ser alterados. Oculte quaisquer frmulas que voc no deseja que fiquem visveis. No menu Ferramentas, aponte para Proteger e clique em Proteger planilha. Para impedir alteraes nas clulas das planilhas ou nos dados e outros itens em grficos, e para impedir a exibio de linhas, colunas e frmulas ocultas, marque a caixa de seleo Contedo. Para impedir alteraes nos objetos grficos de planilhas ou grficos, marque a caixa de seleo Objetos. Para impedir alteraes nas definies de cenrios em uma planilha, marque a caixa de seleo Cenrios. Para impedir que outros usurios removam a proteo da planilha, digite uma senha, clique em OK e, em seguida, redigite a senha na caixa de dilogo Confirmar senha. As senhas coincidem maisculas e minsculas. Digite a senha exatamente como deseja inseri-la, incluindo letras maisculas e minsculas. Se voc atribuir uma senha, deve copi-la e guard-la em local seguro. Se perder a senha, no ter acesso aos elementos protegidos na planilha.

SENHAS NOS MDULOS DO VBA


Para proteger os seus mdulos do VBA, ...

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 36 =

www.clinicadematematica.com.br

EXERCCIOS PROPOSTOS

1)

Crie uma planilha e salve-a com o nome de Senhas. Digite em A1 Valores e em B1 Dobro. De A2 at A7 digite 10, 20, 30, 40, 50 e 60. De B2 at B7 digite uma frmula que ir calcular o dobro dos valores de A2 at A7 (=A2*2). A planilha dever ficar assim: VALORES 10 20 30 40 50 60 DOBRO 20 40 60 80 100 120

02) Coloque uma senha de proteo (1234) na planilha. Feche-a e tente abrir digitando a senha.

03) Retire a senha de proteo da planilha.

04) Coloque uma senha de gravao (4321) na planilha. Feche-a e abra a pasta sem colocar a senha. Faa alguma alterao e depois tente salvar.

05) Retire a senha de gravao.

06) Coloque uma senha de proteo para as clulas que tm frmulas (de B2 at B7). Depois tente digitar algo naquelas clulas.

07) Retire a senha de proteo de clulas.

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 37 =

www.clinicadematematica.com.br

RESUMO DOS PRINCIPAIS COMANDOS DO EXCEL NO VBA

ABRIR UM ARQUIVO
Sintaxe: Workbooks.Open Filename:= "endereo completo" Exemplo: o comando a seguir abre o arquivo Calculos.xls que se encontra na pasta Meus Documentos Workbooks.Open Filename:= "C:\Meus Documentos\Calculos.xls"

APAGAR O CONTEDO DE UM CONJUNTO DE CLULAS


Selection.ClearContents Equivalente a pressionar DEL

COPIAR UMA CLULA


Sintaxe: Referncia.Copy [Destino]. Exemplos: a) ActiveCell.Copy Range(A1) Copia a clula ativa para a clula A1. b) Selection.Copy copia a regio atualmente selecionada para a rea de transferncia c) Range(D20).Copy copia a clula D20 para a rea de transferncia d) Range(D20).Copy Range(D21) copia a clula D20 para a clula D21 e) Range(D20).Copy Range(D21:F21) copia a clula D20 para todas as clulas da regio D21:F21 f) ActiveCell.CurrentRegion.Copy Range("A1") copia a regio atual para a clula A1. No h necessidade que a regio esteja selecionada.

FORMATAR PARA ITLICO


Selection.Font.Italic = True

FORMATAR PARA NEGRITO


Selection.Font.Bold = True

FORMATAR PARA SUBLINHADO


a) Selection.Font.Underline = True sublinha sem especificar o tipo b) Selection.Font.Underline = xlUnderlineStyleSingle Sublinha com linha simples c) Selection.Font.Underline = xlUnderlineStyleDouble Sublinha com linha dupla

FUNES DO EXCEL NO VBA (TRADUZIDAS)


Abs Abs Agora Now Aleatrio Rand Arred Round Caract Chr Cdigo Code Col Column Cols Columns Concatenar Concatenate Cont.Nm Count

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA Cont.Se CountIf E And Int Int Mdia Average ProcV Vlookup Soma Sum SomaSe Sumif VP PV

= 38 =

www.clinicadematematica.com.br

INSERIR COLUNAS
Selection.EntireColumn.Insert

INSERIR LINHAS
Selection.EntireRow.Insert

MOSTRAR A COLUNA ATUAL


Sintaxe: ActiveCell.Column Exemplo: y = ActiveCell.Column MsgBox "A coluna onde voc est " & y

MOSTRAR A LINHA ATUAL


Sintaxe: ActiveCell.Row Exemplo: x = ActiveCell.Row MsgBox "A linha onde voc est " & x

OCULTAR A LINHA ATUAL


ActiveCell.EntireRow.Hidden = True

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA

= 39 =

www.clinicadematematica.com.br

PRINCIPAIS FUNES E SUAS SINTAXES

ABS (X)
Mostra o valor absoluto de x (positivo). Exemplos: 1 se 2 - se 3 Se y = Abs (-4) ento y = 4 y = Abs (10) ento y = 10 y = Abs (10-11) ento y = 1

AND
Funo lgica (AND = E) usada para operaes de avaliao. Exemplo: If x > 2 And x < 10 Then ...

BEEP
Emite sinal sonoro. Exemplo: If y = Erro Then Beep

CHR(CDIGO NUMRICO)
Controla os cdigos ASCII (conjunto de caracteres de 7 bits do American Standard Code for Information Interchange, utilizado para representar letras e smbolos encontrados em um teclado americano padro) do teclado. O conjunto de caracteres ASCII o mesmo dos 128 primeiros caracteres (0 a 127) do conjunto de caracteres ANSI. A seguir listamos alguns cdigos importantes. Chr(10) = Mudana de linha (Simula o pressionamento da tecla ENTER). Chr(13) = Tem a mesma funo do Chr(10), ou seja, Mudana de linha. Chr(32) = Espao (Simula o pressionamento da tecla BARRA DE ESPAO) Chr(33) = ! Chr(35) = # Chr(36) = $ Chr(37) = % Chr(38) = & Chr(65) = A Chr(97) = a Chr(62) = > Chr(37) = % Chr(128) =

COLUMN (CLULA)
Mostra a coluna (em nmero) em que voc est. Exemplos: X = Range(D2).Column neste caso x = 4 que corresponde coluna D x = Range("d:d").Column x = 4, que corresponde coluna D x = ActiveCell.Column Mostra a coluna em que voc est no momento

INT (X)
Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Programao em VBA Mostra a parte inteira de x. Exemplos: 1 se 2 - se 3 se

= 40 =

www.clinicadematematica.com.br

y = Int (2,32) ento y = 2 y = Int (10) ento y = 10 y = Int (10/3) ento y = 3

NOW ()
Equivalente funo =Agora(), mostra a data e a hora do momento.

RND ()
Equivalente funo =Aleatrio(), gera um nmero aleatrio (randmico), compreendido entre 0 e 1. Exemplos: X = Rnd() Gera um nmero aleatrio entre 0 e 1. X = Rnd()*10 Gera um nmero aleatrio entre 0 e 10. X = Int(Rnd()*10) Gera um nmero inteiro aleatrio entre 0 e 10.

ROUND (NUM, NUM DE DGITOS)


Equivalente funo =Arred(), arredonda o nmero para o nmero de dgitos fornecido. Exemplos: X = Round(2.39 , 1) equivale a arredondar 2,39 para 1 casa (x = 2,40) X = Round (234.4 , 0) equivale a arredondar 234,4 para nenhuma casa (x = 234)

Tel. (61) 3321-3939

sac@clinicadematematica.com.br

Você também pode gostar