Avançado Trabalhando com VBA Descubra a linguagem de programação do Microsoft Office e torne-se um expert no desenvolvimento de funções, macros e planilhas eletrônicas Nas 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 aprender a utilizar esse recurso em minhas planilhas eletrônicas mesmo não conhecendo nada de programação? É claro que sim pois, com a prática, você poderá criar sistemas complexos de cadastro de produtos, clientes e fornecedores, desenvolver planilhas para serem vendidas a empresas 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. Visão geral do ambiente do VBA Retornar à planilha Excel Salvar a planilha Instruções do VBA Planilhas e módulos ativos Comandos de execução do programa Área de trabalho
Os ícones de sua janela 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 objeto selecionado. Exibir objeto: Vai alternar entre a janela do editor do Visual Basic e a janela original da aplicação com o objeto selecionado. Alternar pastas: Alterna a exibição da janela Explorer do projeto 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 ) é o nome do arquivo que está sendo editado no momento. 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ência da pasta de trabalho que está aberta no momento, e também vai conter todos os eventos (procedimentos) pertencentes a essa pasta, tais como abrir, fechar, inicializar, etc. Plan: 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. Objetos no VBA Antes de compreender o que é VBA, vamos entender o que são objetos. Temos vários objetos 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 usado para a execução de tarefas do Excel. Toda vez que é informado ao VBA o que desejamos executar 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 desejamos alterar. Por exemplo: WorkSheets (Pasta.xls ) Range ( A:C ).Select Workbooks () Os objetos no VBA formam uma hierarquia e, abaixo desses níveis, temos outros objetos, tais como: -Workbooks; - AddIns; Dica: - 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 podem 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 deseja é testá-lo, não é mesmo? Para isso, basta clicar no botão Executar localizado na barra de ferramentas do editor do programa e pressionar a seqüência de teclas Alt + F 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
Avançado 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 realizar a mesma tarefa todo esse tempo. Pra falar a verdade, não podemos 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 horas 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 editor do VBA que a maioria dos usuários nunca nem se quer teve a curiosidade 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á? Como programar Para se tornar um expert em VBA, é necessário primeiramente que todo usuário inicie o seu trabalho criando programas com códigos e instruções simples. Isso certamente irá facilitar e melhorar a assimilação dos comandos 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 trabalhadas de um funcionário de uma empresa. Confira! Acesse o editor do VBA, clique no menu Ferramentas/Macros e, em seguida, selecione a opção Editor do Visual Basic. Para acessar o editor do VBA no Excel, clique no menu Ferramentas, escolha Macros e, em seguida, selecione Editor do Visual Basic. Será aberta automaticamente pelo programa uma janela que o levará ao ambiente de codificação de programas, que também é acessado com as teclas Ctrl + F. Como podemos notar, não há nenhum projeto carregado. Clique duas vezes na planilha para abrir um novo projeto. 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 Pronto, agora é só salvar o seu trabalho e clicar no botão Executar para testar a funcionalidade do programa. Viu como é fácil?
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: 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 ( A:B6 ). Select. Para testar, insira um novo módulo e digite o código acima. O comando fez com que uma certa quantidade de células da planilha ficassem selecionadas, tudo isso graças à instrução Range, que demarca o espaço entre as células A até B6, como mostra a figura. Active: posiciona o cursor em uma determinada célula da sua planilha. Sua sintaxe é a seguinte: Range ( B ).Active. Para testar o comando, substitua o código do Select pelo citado neste passo. 4 Execute o programa. Como você pode perceber, o comando fez com que o cursor se posicionasse diretamente na célula B. Você pode incluir esse comando em um programa para encontrar uma célula vital.
Avançado Programando em VBA Criar um programa em qualquer linguagem de programação é uma tarefa que requer um pouco de estudo e dedicação. Por exemplo, se você tem um cliente que quer implantar uma solução simples para cadastrar os clientes, fornecedores ou até mesmo compradores da sua empresa e fazer o controle do seu fluxo de caixa, então o primei- ro passo é estudar as informações que devem 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.RC. A primeira parte desse comando torna ativa uma determinada célula. A segunda parte, RC, representa a célula que será ativada, sendo que R (Row ) significa linha e, C (Column ), coluna. Crie uma planilha qualquer no Excel e, em seguida, acesse o menu Ferramentas, Macro e Gravar nova Macro. Digite um nome para a sua macro (neste caso, usaremos teste ) e confirme com um simples clique no botão OK. Em seguida, vamos acessar o menu Ferramentas, Macro e clicar no editor do Visual Basic para prosseguir. 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. 5 O próximo passo é incluir o comando ActiveCell.FormulaRC = Teste VBA no seu programa. 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.
Criando uma macro que verifica o CPF Trabalhar com macros no VBA é uma tarefa 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 editor do VBA, pressionando as teclas Alt + F ou selecionado o menu Ferramenta/Macro/Editor do Visual Basic. Resto = (Soma Mod) If (Resto <= ) Then DV = 0 Else DV = Resto Soma = ((d * ) + (d * 0) + (d * 9) + (d4 * 8) + (d5 * 7) + (d6 * 6) + (d7 * 5) + (d8 * 4) + (d9 * ) + (DV * ) Resto = (Soma Mod) If (Resto <= ) Then DV = 0 Else DV = Resto If ((DV <> d0) Or (DV <> d)) Then TestaCPF = Inválido Else TestaCPF = Válido End Function 4 5 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). É importante lembrar que cada célula digitada na instrução fará referência à célula cujo CPF foi digitado. Exemplo: =TestaCPF(A). Em seguida, com a janela do editor aberta, digite as instruções a seguir: Public Function TestaCPF(CPF As String) As String Dim d, d, d, d4, d5, d6, d7, d8, d9, d0, d As Integer Dim Soma, Soma, Resto As Integer Dim DV, DV As Integer If Not (IsNull (CPF)) Then d= Val (Mid$ (CPF,,)) d= Val (Mid$ (CPF,,)) d= Val (Mid$ (CPF,,)) d4= Val (Mid$ (CPF, 4,)) d5= Val (Mid$ (CPF, 5,)) d6= Val (Mid$ (CPF, 6,)) d7= Val (Mid$ (CPF, 7,)) d8= Val (Mid$ (CPF, 8,)) d9= Val (Mid$ (CPF, 9,)) d0= Val (Mid$ (CPF, 0,)) d= Val (Mid$ (CPF,,)) Soma = ((d * 0) + (d * 9) + (d * 8) + (d4 * 7) + (d5 * 6) + (d6 * 5) + (d7 * 4) + (d8 * ) + (d9 * )) Agora salve as instruções, clicando no menu Arquivo/Salvar e pressione as teclas Alt + F para retornar ao Excel. Pronto, agora você já sabe criar um programinha que verifica os números de 6 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.