Baixe o app para aproveitar ainda mais
Prévia do material em texto
Avançado 8 OneClick Trabalhando com VBA as edições anteriores da revista One Click, falamos um pouco a respeito da criação de macros e alguns aspectos básicos da utilização do Visual Basic Apllication no desenvolvimento de funções programadas e outras aplicações que necessitam de recursos avançados. Como você já sabe, o VBA é uma linguagem de programa- ção que permite a resolução de problemas mais complexos dentro do Excel. No entanto, isso acaba exigindo uma maior dedicação por parte do usuário, pois tal linguagem requer um conhecimento mínimo em lógica de programação. Mas você deve estar se perguntando: será que vale a pena N Descubra a linguagem de programação do Microsoft Office e torne-se um expert no desenvolvimento de funções, macros e planilhas eletrônicas Retornar à planilha Excel Salvar a planilha Instruções do VBA Planilhas e módulos ativos Comandos de execução do programa Área de trabalho Visão geral do ambiente do VBA ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ aprender a utilizar esse recurso em minhas planilhas eletrô- nicas mesmo não conhecendo nada de programação? É cla- ro que sim pois, com a prática, você poderá criar sistemas complexos de cadastro de produtos, clientes e fornecedo- res, desenvolver planilhas para serem vendidas a empre- sas de pequeno e médio porte, além de outras soluções que vão depender apenas do seu nível de criatividade. Nesta edição, você aprenderá alguns aspectos avançados sobre esta poderosa ferramenta disponível no Excel para a criação de códigos VBA e poderá aumentar o seu nível de conhecimento dentro do aplicativo. trabalhando VBA.p65 5/2/2004, 19:558 9OneClick Objetos no VBA Antes de compreender o que é VBA, vamos entender o que são objetos. Temos vários ob- jetos dentro de um aplicativo, por exemplo, uma barra de ferramentas, uma planilha aberta, uma caixa de texto, etc. Tudo isso é considerado um objeto. Portanto, o objeto é algo controlável por meio da linguagem VBA, sendo usa- do para a execução de tarefas do Excel. Toda vez que é informado ao VBA o que desejamos execu- tar em sua interface, não nos referimos diretamente a um objeto, mas a uma coleção de objetos. Assim, temos de nos referir à coleção de objetos à qual ele pertence e depois ao item desta coleção o qual de- sejamos alterar. Por exemplo: WorkSheets (Pasta1.xls”) Range (“A1:C3”).Select Workbooks (1) Os objetos no VBA formam uma hierarquia e, abaixo des- ses níveis, temos outros obje- tos, tais como: -Workbooks; - AddIns; Na janela do Visual Basic, você pode visualizar três ícones que alteram o modo de visualização de sua estrutura: Exibir códigos: Exibe a janela de módulo que contém o código em VBA que está associado ao ob- jeto selecionado. Exibir objeto: Vai alternar en- tre a janela do editor do Visual Basic e a janela original da aplica- ção com o objeto selecionado. Alternar pastas: Alterna a exi- bição da janela Explorer do proje- to entre a hierarquia dos objetos e uma lista simples dos mesmos. Já suas pastas serão representadas por um tipo de ícone diferente, observe: VBA Project: Permite a abertura de todos os objetos de uma pasta de trabalho. (Pasta 1) é o nome do arqui- vo que está sendo editado no mo- mento. Ao gravar, será substituído pelo nome do arquivo. Podemos visualizar objetos tais como planilhas, formulários, módulos, entre outros. Pasta de trabalho: É a referên- cia da pasta de trabalho que está aberta no momento, e também vai conter todos os eventos (procedi- mentos) pertencentes a essa pasta, tais como abrir, fechar, inicializar, etc. Plan1: Exibe a folha de código com as rotinas para a planilha específica. Módulos: Abre uma tela com os códigos existentes para a criação de rotinas (macros) diversas para esta pasta de trabalho. Módulos de Classe: Vai abrir uma tela (página) com os módulos (rotinas) de classe desta aplicação. Os ícones de sua janela ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ - MenuBars; - ToolBar; - Windows. Para nos referirmos a eles, é necessário digitar a que cole- ção os mesmos pertencem e qual é o objeto, veja: Apllication.Woorkbooks(“ Minha Planilha”) Na maioria das vezes, fazemos este tipo de referência a uma planilha ou às suas células, portanto os objetos ativos po- dem ser: - ActiveCell; - ActiveDialog; - ActiveMenuBar; - ActivePrinter; - ActiveWindow; - ActiveChart; - ActiveX; - ActivePanel; - ActiveSheet; - ActiveWorkbook. Exemplo: Sub AlteraExibição() With Active Window .DisplayGridlines = False .DisplayHeadings = False .Zoom = 75 End With End Sub Logo depois de criar o seu projeto no VBA, tudo o que você mais de- seja é testá-lo, não é mesmo? Para isso, basta clicar no botão Executar localizado na barra de ferramentas do editor do programa e pres- sionar a seqüência de teclas Alt + F11 para voltar à janela do Excel e verificar o resultado final do seu trabalho. Assim, você conseguirá muito mais agilidade e praticidade no momento de criar macros, programas e outras aplicações que utilizam códigos e funções avan- çadas em sua execução Dica: trabalhando VBA.p65 5/2/2004, 19:559 Avançado 10 OneClick 3 Como podemos notar, não há nenhum projeto carregado. Clique duas ve- zes na planilha 1 para abrir um novo projeto. ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ O editor do VBA Com certeza, você deve conhecer um amigo ou até mesmo um parente que passou anos exercendo uma mesma função dentro de uma empresa e ficou se perguntando como ele nunca enjoou de rea- lizar a mesma tarefa todo esse tempo. Pra falar a verdade, não pode- mos dizer que ele nunca enjoou de fazer a mesma coisa todos os dias. A realidade é que ele acabou se acostumando com essa rotina. O mesmo acontece com os usuários de computador que passam ho- ras usando programas para desenvolver seus trabalhos e atividades diárias, e não fazem idéia do potencial que se esconde por trás das ferramentas Microsoft Office. Um dos exemplos mais comuns é o edi- tor do VBA que a maioria dos usuários nunca nem se quer teve a curi- osidade de abrir e conhecer suas funções. Então, o que você acha de dar uma espiadinha na janela desse incrível editor? Vamos lá? 2 Será aberta automaticamente pelo programa uma janela que o levará ao ambien- te de codificação de programas, que também é acessado com as teclas Ctrl + F11. 1 Para acessar o editor do VBA no Excel, clique no menu Ferramentas, esco- lha Macros e, em seguida, selecione Editor do Visual Basic. Pronto, agora é só salvar o seu trabalho e clicar no botão Executar para testar a funcionalidade do programa. Viu como é fácil? 2 Em seguida, com a janela aberta na tela do seu computador, digite as seguintes linhas de código: Sub CalcPay () On Error GoTo HandleError Dim hours Dim hourlyPay Dim payPerWeek hours = InputBox(“Digite o número de horas trabalhadas”, “Horas trabalhadas”) hourlyPay = InputBox (“Digite o valor da hora”, “ Valor ”) payPerWeek = CCur (hours * hourlyPay) MsgBox “ Valor: ” & Format (payPerWeek, “S##,##0.00”, , “ Total Pay ” HandleError:End Sub 1 Acesse o editor do VBA, clique no menu Ferramentas/Macros e, em seguida, selecione a opção Editor do Visual Basic. 3 Como programar Para se tornar um expert em VBA, é necessário primei- ramente que todo usuário inicie o seu trabalho criando programas com códigos e instruções simples. Isso certa- mente irá facilitar e melhorar a assimilação dos coman- dos utilizados pela linguagem e o ajudará a aprimorar suas técnicas de programação. No exemplo a seguir, você aprenderá a confeccionar uma simples macro que calcula o número de horas tra- balhadas de um funcionário de uma empresa. Confira! trabalhando VBA.p65 5/2/2004, 19:5610 11OneClick Os comandos do VBA O Visual Basic Apllication ou VBA, como é mais conhecido, possui um número muito grande de comandos e instruções que são utilizados para codificar e executar uma determinada tarefa no Excel. Neste exemplo, vamos demonstrar algumas das muitas utilizações de dois comandos específicos: o Active e o Select. Acompanhe: 1 2 O comando fez com que uma certa quantidade de células da planilha fi- cassem selecionadas, tudo isso graças à instrução Range, que demarca o espaço entre as células A1 até B6, como mostra a figura. 4 Execute o programa. Como você pode perceber, o comando fez com que o cursor se posicionasse diretamente na célula B1. Você pode incluir esse comando em um programa para encontrar uma célula vital. Select: seleciona células da planilha por meio de um Range, ou seja, de um intervalo de seleção. A sintaxe para o comando é a seguinte: Range (“A1:B6”). Select. Para testar, insira um novo módulo e digite o código acima. 3 Active: posiciona o cursor em uma determinada célula da sua planilha. Sua sintaxe é a seguinte: Range (“B1”).Active. Para testar o comando, substitua o código do Select pelo citado neste passo. trabalhando VBA.p65 5/2/2004, 19:5611 12 OneClick Avançado Programando em VBA Criar um programa em qualquer lingua- gem de programação é uma tarefa que re- quer um pouco de estudo e dedicação. Por exemplo, se você tem um cliente que quer implantar uma solução simples para cadas- trar os clientes, fornecedores ou até mesmo compradores da sua empresa e fazer o con- trole do seu fluxo de caixa, então o primei- 1 Crie uma planilha qualquer no Excel e, em seguida, acesse o menu Ferramentas, Macro e Gravar nova Macro. 3 Em seguida, vamos acessar o menu Ferramentas, Macro e clicar no editor do Visual Basic para prosseguir. 5 O próximo passo é incluir o comando ActiveCell.FormulaR1C1 = “Teste VBA” no seu programa. 2 Digite um nome para a sua macro (neste caso, usaremos “teste”) e confir- me com um simples clique no botão OK. 4 Na tela do VBA, dê um duplo clique na pasta Módulo e depois escolha a opção Módulo para abrir a tela de edição. 6 Clique no botão Executar e veja o que acontece com a planilha. Esse é apenas um exemplo básico do que pode ser feito em VBA. ro passo é estudar as informações que de- vem ser disponibilizadas nessa planilha. É importante lembrar que você passará mais tempo planejando o programa do que criando a sua codificação. Isso prevenirá futuros erros no sistema e eventuais falhas no programa, ou seja, vale a pena gastar um pouco mais de tempo desenvolvendo o projeto e menos dias na sua confecção. Agora é o momento de você começar a criar o nosso primeiro programa no VBA. Este exemplo é muito básico e poderá ser executado através do comando ActiveCell.R1C1. A primeira parte desse co- mando torna ativa uma determinada célula. A segunda parte, RC1, representa a célula que será ativada, sendo que R1 (Row 1) sig- nifica linha 1 e, C1 (Column 1), coluna 1. trabalhando VBA.p65 5/2/2004, 19:5612 13OneClick Criando uma macro que verifica o CPF Trabalhar com macros no VBA é uma tare- fa bem simples e rápida de ser executada. No exemplo a seguir, vamos criar uma macro que verifica se os números de CPF (Cadastro de Pessoa Física) de uma planilha de dados e analisar se os códigos digitados são válidos. O primeiro passo é abrir a janela do edi- tor do VBA, pressionando as teclas Alt + F11 ou selecionado o menu Ferra- menta/Macro/Editor do Visual Basic. Resto1 = (Soma1 Mod11) If (Resto1 <= 1) Then DV1 = 0 Else DV1 = 11 – Resto1 End If Soma2 = ((d1 * 11) + (d2 * 10) + (d3 * 9) + (d4 * 8) + (d5 * 7) + (d6 * 6) + (d7 * 5) + (d8 * 4) + (d9 * 3) + (DV1 * 2) Resto2 = (Soma2 Mod11) If (Resto2 <= 1) Then DV2 = 0 Else DV2 = 11 – Resto2 End If If ((DV1 <> d10) Or (DV2 <> d11)) Then TestaCPF = “Inválido” Else TestaCPF = “Válido” End If End If End Function De volta à janela do Excel, digite nas células que armazenarão os resultados de sua verifica- ção a seguinte fórmula: =TestaCPF(Célula). 1 Em seguida, com a janela do editor aberta, digite as instruções a seguir: Public Function TestaCPF(CPF As String) As String Dim d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11 As Integer Dim Soma1, Soma2, Resto As Integer Dim DV1, DV2 As Integer If Not (IsNull (CPF)) Then d1= Val (Mid$ (CPF, 1,1)) d2= Val (Mid$ (CPF, 2,1)) d3= Val (Mid$ (CPF, 3,1)) d4= Val (Mid$ (CPF, 4,1)) d5= Val (Mid$ (CPF, 5,1)) d6= Val (Mid$ (CPF, 6,1)) d7= Val (Mid$ (CPF, 7,1)) d8= Val (Mid$ (CPF, 8,1)) d9= Val (Mid$ (CPF, 9,1)) d10= Val (Mid$ (CPF, 10,1)) d11= Val (Mid$ (CPF, 11,1)) Soma1 = ((d1 * 10) + (d2 * 9) + (d3 * 8) + (d4 * 7) + (d5 * 6) + (d6 * 5) + (d7 * 4) + (d8 * 3) + (d9 * 2)) 2 3 Agora salve as instruções, clicando no menu Arquivo/Salvar e pressione as teclas Alt + F11 para retornar ao Excel. 4 5 6 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ É importante lembrar que cada célula digitada na instrução fará referência à célula cujo CPF foi digitado. Exemplo: =TestaCPF(A3). Pronto, agora você já sabe criar um pro- graminha que verifica os números de CPF e retorna se estes são válidos ou não. E poderá utilizá-lo para facilitar e melhorar a sua rotina de trabalho no Excel. trabalhando VBA.p65 5/2/2004, 19:5613
Compartilhar