Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Programacao VBA e Macros Do Excel
Apostila Programacao VBA e Macros Do Excel
Programao em VBA
=4=
www.clinicadematematica.com.br
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
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
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
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
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
sac@clinicadematematica.com.br
Programao em VBA
=7=
www.clinicadematematica.com.br
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.
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.
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.
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.
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.
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.
sac@clinicadematematica.com.br
Programao em VBA
= 12 =
www.clinicadematematica.com.br
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.
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.
sac@clinicadematematica.com.br
Programao em VBA
= 14 =
www.clinicadematematica.com.br
FUNES PERSONALIZADAS
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).
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.
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.
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-
sac@clinicadematematica.com.br
= 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
sac@clinicadematematica.com.br
Programao em VBA
= 17 =
www.clinicadematematica.com.br
MACROS DE TECLADO
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.
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).
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.
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.
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).
05) Faa um programa que insira na clula atual a quantidade de planilhas da Pasta de Planilhas Ativa.
06)
uma
planilha
no
final
da
pasta
atual
(Worksheets.Add.Move
af-
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.
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)"
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.
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
sac@clinicadematematica.com.br
= 25 =
www.clinicadematematica.com.br
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;
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.
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.
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
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
sac@clinicadematematica.com.br
= 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
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
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
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.
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.
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.
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.
06) Coloque uma senha de proteo para as clulas que tm frmulas (de B2 at B7). Depois tente digitar algo naquelas clulas.
sac@clinicadematematica.com.br
Programao em VBA
= 37 =
www.clinicadematematica.com.br
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"
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
sac@clinicadematematica.com.br
Programao em VBA
= 39 =
www.clinicadematematica.com.br
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
= 40 =
www.clinicadematematica.com.br
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.
sac@clinicadematematica.com.br