Anda di halaman 1dari 46

A POSTILA DE VBA PARA EXCEL

MARCOS DE BARROS

OUTUBRO DE 2002

- RISK MANAGEMENT

NDICE
I NTRODUO AO VBA ____________________________________________________ 5 Constantes___________________________________________________________ 5 Variveis ____________________________________________________________ 5 Tipos de variveis e constantes _______________________________________ 6 O Comando Option Explicit ____________________________________________ 7 Comentrios _________________________________________________________ 7 Operadores __________________________________________________________ 7 Arrays ______________________________________________________________ 10 Estrutura de dados __________________________________________________ 12 F LUXOS DE CONTROLE __________________________________________________ 12 Expresses condicionais _____________________________________________ 13 Loops _______________________________________________________________ 16 F UNES E P ROCEDIMENTOS _____________________________________________ Diferenas __________________________________________________________ Quando usar? _______________________________________________________ Passagem de Parmetros ____________________________________________ Passagem de parmetros: Referncia X Valor _________________________ Parmetros Opcionais _______________________________________________ Variveis locais X Variveis globais __________________________________ 19 20 20 20 21 22 23

F UNES MATEMTICAS _________________________________________________ 24 F UNES DIVERSAS _____________________________________________________ 25 F UNES DE CONVERSO ________________________________________________ 26 STRINGS _______________________________________________________________ 27 MACROS _______________________________________________________________ Como criar__________________________________________________________ Gerao de Macros pelo Excel ________________________________________ Como executar uma Macro na abertura do arquivo ____________________ Associando objetos a Macros _________________________________________ Como executar passo a passo ________________________________________ Pontos de parada em uma Macro _____________________________________ Visualizao de valores de variveis em tempo de execuo ___________ OS P RINCIPAIS OBJETOS DO EXCEL _______________________________________ Application __________________________________________________________ Workbook ____________________________________________________________ Worksheet __________________________________________________________ 2 29 29 31 32 32 33 34 35 35 36 37 37

- RISK MANAGEMENT

Range ______________________________________________________________ Cells ________________________________________________________________ Collection ___________________________________________________________ Chart _______________________________________________________________ P ROPRIEDADES E MTODOS ______________________________________________ Definies ___________________________________________________________ Principais propriedades dos principais objetos ________________________ Principais mtodos dos principais objetos _____________________________

38 39 39 40 41 41 42 43

T RATAMENTO DE ERROS _________________________________________________ 43 Como tratar um erro no programa ____________________________________ 43

- RISK MANAGEMENT

NDICE DE F IGURAS

Figura 1 - Exemplo de Criao de uma M acro no Editor do Excel......................................... 30 Figura 2 - O editor de Visual Basic .......................................................................................... 31 Figura 3 - Como associar uma Macro a um objeto Desenho................................................... 33 Figura 4 - Exemplo de execuo de um programa com ponto de parada ................................. 34 Figura 5 - Diagrama de Objetos do Microsoft Excel................................................................ 36 Figura 6 - Diagrama de Objetos do Microsoft Excel a partir do Objeto Worksheet ................ 38 Figura 7 - Diagrama de Objetos do Microsoft Excel a partir do Objeto Chart......................... 41

- RISK MANAGEMENT

I NTRODUO AO VBA
VBA (Visual Basic for Application) uma linguagem de programao utilizada utilizada para desenvolver programas executados nos principais softwares do pacote Office (Access, Excel, Word, Power Point) da Microsoft. Uma linguagem de programao permite montarmos programas que auxiliam tarefas do dia a dia de seus usurios.

Constantes
Uma constante representa um valor fixo, ou seja, que no mudado ao longo da execuo do programa. Para declarar uma constante no VBA, usamos o comando Const. O valor e o tipo de dados so atribudos em uma mesma linha de comando. Exemplo: Const Valor_Pi As Double = 3,14

Variveis
Qualquer quantidade que muda de valor no decorrer de um programa chamada de varivel. Para cada varivel, damos uma representao simblica, ou nome, para que ela possa ser identificada no programa. O local e a forma de criao define o escopo da varivel, ou seja, onde esta pode ser visualizada dentro do programa.

- RISK MANAGEMENT

A declarao de uma varivel em VBA feita usando o comando Dim em qualquer local do procedimento, porm comum os programadores declararem todas as variveis logo no incio do procedimento. Exemplo: Dim juros As Double Dim nome, sobrenome As String

Tipos de variveis e constantes


Em VBA, assim como em todas as linguagens de programao, cada varivel ou constante contm um tipo de dados especfico. Tipo de Dado Boolean Byte Currency Date Double Single Integer Long Object String Variant User-Defined Descrio Permite armazenar valores Booleanos Permite armazenar nmeros em mdulo Permite armazenar moeda Permite armazenar datas Permite armazenar nmeros reais Permite armazenar nmeros reais permite armazenar nmeros inteiros permite armazenar nmeros inteiros Possveis Valores True ou False 0 a 255 Qualquer data que pode ser reconhecida pelo Excel -1.79769313486232E308 a 1.79769313486232E308 -3.402823E38 a 3.402823E38 -32.768 e 32767 -2 147 483 648 a 2 147 483 648 -

utilizado para fazer referncia a um objeto do Excel permite armazenar conjuntos de Textos em geral caracteres permite armazenar qualquer tipo de dado permite armazenar valores de tipos definidos pelo usurio

Obs: Usa-se o caracter # para atribuir data (ex: dteInicio = #07/01/2002 11:00#)

- RISK MANAGEMENT

O Comando Option Explicit


Na realidade, a declarao de variveis necessria em um programa VBA, caso o programador use o comando Option Explicit no incio do mdulo. Caso contrrio, no necessrio a declarao das variveis utilizadas que recebem, ento, o tipo Variant. Exemplos: Option Explicit Sub calculaMedia() Dim dblMedia as Double

Comentrios
Comentrios devem ser feitos para ajudar o entendimento do cdigo, auxiliando manutenes e modificaes futuras. Podemos realizar comentrios no VBA utilizando o caracter . Exemplos: Sub calculaMedia() Comentrio: Declarao de Variveis Dim dblMedia as Double

Operadores
O VBA utiliza alguns operadores, que permitem a realizao de comparaes, atribuies, etc. Podemos dividir os operadores nas seguintes categorias: 7 - RISK MANAGEMENT

Aritmticos Utilizados em clculos e expresses matemticas. Operador Soma Subtrao Multiplicao Diviso Expoente Diviso Inteira Mod Resto Atribuio Apenas um operador faz parte desta categoria. Este operador utilizado para atribuir valores a variveis. Operador Atribuio Comparao Utilizado na maioria das vezes em expresses de fluxo de controle (ver seo Fluxo de Controle), para comparar valores ou variveis. Retornam TRUE ou FALSE. Representao = Sintaxe [Varivel] = [Valor] Representao + * / ^ \ Mod Sintaxe [Nmero 1] + [Nmero 2] [Nmero 1] - [Nmero 2] [Nmero 1] * [Nmero 2] [Nmero] / [Divisor] [Nmero] ^ [Expoente] [Nmero] \ [Divisor] [Nmero] \ [Divisor]

Operador Menor que Menor ou igual que Maior que Maior ou igual que Igual Diferente Igual (objetos)

Representao < <= > >= = <> Is

Sintaxe [Varivel] < [Valor] [Varivel] <= [Valor] [Varivel] > [Valor] [Varivel] >= [Valor] [Varivel] = [Valor] [Varivel] <> [Valor] [Object 1] Is [Object 2]

- RISK MANAGEMENT

Concatenao Utilizados para concatenar duas variveis do tipo String. Operador Concatenao Concatenao Representao & + Sintaxe [Varivel 1] & [Varivel 2] [Varivel 1] + [Varivel 2]

recomendvel o uso do operador & para evitar ambigidade. Lgicos Utilizados em expresses lgicas. Retornam TRUE ou FALSE Operador AND OR NOT XOR Representao AND OR NOT XOR Sintaxe [Varivel 1] AND [Varivel 2] [Varivel 1] OR [Varivel 2] NOT [Varivel 1] [Varivel 1] XOR [Varivel 2]

Abaixo seguem o resultados das expresses, utilizando cada operador. Podemos chamar as tabelas abaixo de Tabela Verdade. Tabela Verdade para o operador AND Expresso 1 TRUE TRUE FALSE FALSE Expresso 2 TRUE FALSE TRUE FALSE Expresso 1 AND Expresso 2 TRUE FALSE FALSE FALSE

Tabela Verdade para o operador OR Expresso 1 TRUE TRUE FALSE FALSE Expresso 2 TRUE FALSE TRUE FALSE Expresso 1 OR Expresso 2 TRUE TRUE TRUE FALSE

Tabela Verdade para o operador NOT 9

- RISK MANAGEMENT

Expresso 1 TRUE FALSE Tabela Verdade para o operador XOR Expresso 1 TRUE TRUE FALSE FALSE Expresso 2 TRUE FALSE TRUE FALSE

NOT Expresso 1 FALSE TRUE

Expresso 1 XOR Expresso 2 FALSE TRUE TRUE FALSE

Arrays
Varivel que contm uma lista de valores do mesmo tipo. O limite da lista pode ser informado na declarao da varivel. O primeiro valor do Array corresponde a posio 0 (zero). Exemplo: Dim arrEmpresas(10) as String arrEmpresas(0) = Mellon Brascan arrEmpresas(1) = Foco Informtica

Arrays Multidimensionais
O Array pode ser multi-dimensional. A sintaxe de um Array de duas dimenses seria: Dim [Nome da Varivel](i, j) as [Tipo de Dado] Exemplo: 10 - RISK MANAGEMENT

Dim mtzValores(2, 2), i, j As Integer For i = 1 To 2 For j = 1 To 2 mtzValores(i, j) = i * j Next Next Um Array tambm pode ser dimensionado, de acordo com a necessidade. A declarao deve ser feita sem a informao do limite do Array. necessrio dimensionar o Array, antes de atribuir valores. Para isso, usase o comando ReDim. Exemplo: Dim arrEmpresas() as String Redim arrEmpresas(1) arrEmpresas(0) = Mellon Brascan arrEmpresas(1) = Shell Brasil Caso o Array dinmico j tenha sido dimensionado, usamos a mesma sintaxe para redimension-lo. Para manter os valores j atribudos deve-se usar o comando Preserve. No entanto, s ser possvel aumentar a sua dimenso. Exemplo: Dim arrEmpresas() as String Redim arrEmpresas(1) arrEmpresas(0) = Mellon Brascan arrEmpresas(1) = Alfredo D istribuidores Redim arrEmpresas(3) 11

- RISK MANAGEMENT

arrEmpresas(2) = Foco Informtica

Estrutura de dados
Em alguns casos, os tipos de dados existentes na linguagem no so satisfatrios. possvel criar tipos definidos pelo programador. Exemplo: necessrio ter sempre no programa, o nome e o CNPJ da empresa. Cria-se, ento, um tipo Empresa. Type Empresa RazaoSocial as String CNPJ as String End Type Podemos definir uma varivel do tipo Empresa. Dim empresaAtual as Empresa possvel definir um array do tipo Empresa Dim empresas(10) as Empresa Podemos atribuir valores da seguinte forma: empresaAtual.CNPJ = 1111111111 empresas(1).RazaoSocial = Mellon Brascan empresas(1).CNPJ = 222222222

F LUXOS DE CONTROLE
Veremos nesta seo as instrues de controle que afetam o fluxo de execuo de um programa e so amplamente utilizadas. Um programa 12 - RISK MANAGEMENT

executado de diversas formas, de acordo com parmetros de entrada e estados de variveis. O fluxo de execuo de um programa controlado, basicamente, atravs de decises (utilizao de expresses condicionais) e repetio de instrues (loops). Sendo assim, podemos dividir as instrues de fluxo de controle em duas categorias: as expresses condicionais e os loops.

Expresses condicionais If-Then-Else


a expresso condicional mais utilizada. Sintaxe: If ([Condio]) Then [Comandos 1] Else [Comandos 2]

Se a condio definida for verdadeira, os comandos definidos em [Comandos


1] sero executados. Se a condio for falsa, o bloco [Comandos 2] ser

executado. Exemplo: If (intNumero >= 0) Then strMensagem = A varivel positiva Else strMensagem = A varivel negativa MsgBox(strMensagem) 13 - RISK MANAGEMENT

Existem casos em que temos mais do que apenas duas possibilidades. Sendo assim, podemos usar a instruo ElseIf. Exemplo: If ([Condio 1]) Then [Comandos 1] ElseIf ([Condio 2]) Then [Comandos 2] Else [Comandos 3] Os blocos de comandos [Comandos 1] ou [Comandos 2] sero executados, caso as condies
[Condio 1]

[Condio

2]

forem

verdadeiras,

respectivamente. Caso contrrio, [Comandos 3] ser executado. Exemplo: If (intNumero > 0) Then strMensagem = A varivel positiva ElseIf (intNumero < 0) Then strMensagem = A varivel negativa Else strMensagem = A varivel tem o valor zero. MsgBox(strMensagem)

Case
Utilizado em expresses condicionais, onde h mais de duas possibilidades. Sintaxe:

14

- RISK MANAGEMENT

Select Case [expresso] [Case possibilidade-1 [comandos-1]] . . . [Case possibilidade-n [comandos-n]] [Case Else [comandos else]] End Select Muito semelhante ao If...Then...ElseIf...Else... Indicado para expresses com vrias possibilidades. Exemplo 1: Select Case intNumero Case Is > 0 strMensagem = A varivel positiva Case Is < 0 strMensagem = A varivel negativa Case Else strMensagem = A varivel tem o valor zero. End Select MsgBox(strMensagem) Exemplo 2: Select Case strTipoEmpresa Case Financeira MsgBox(Empresa do ramo financeiro) Case Industrial MsgBox(Empresa do ramo industrial) Case Servios 15 - RISK MANAGEMENT

MsgBox(Empresa do ramo de servios) Case Else MsgBox(No identificado) End Select

Loops
Um loop permite a execuo de um conjunto de comandos repetidamente. Alguns loops so executados at uma condio se tornar falsa, outros at a condio ser verdadeira. Existem ainda loops que permitem a execuo de um bloco de comandos um nmero fixo de vezes. While Executa um bloco de comandos enquanto uma condio for verdadeira. Sintaxe: While [condio] [comandos] Wend Exemplo:
flag = true ... While (flag) If (adicional > 0) Then Total = total + adicional Else flag = false End If adicional = adicional valor_desconto Wend

16

- RISK MANAGEMENT

For Executa um bloco de comandos um nmero determinado de vezes. Sintaxe: For i = [incio] To [fim] [Passo] [comandos] [Exit For] [comandos] Next Exemplo: Dim arrInteiros(50) As Integer Dim i As Integer Inicializa o array com valor 0 For i = 1 to Ubound(arrInteiros) arrInteiros(i) = 0 Next Obs: Se o limite superior for definido a partir de uma varivel e o valor desta varivel for mudado ao longo do loop, a quantidade de iteraes no ser alterada. Exemplo: O loop abaixo executado apenas 5 vezes. intMaximo = 5 For intContador = 1 To intMaximo MsgBox(Valor do Contador: & intContador) if (intContador = 3) Then intMaximo = intMaximo + 10 End If Next 17 - RISK MANAGEMENT

Do Loop Executa um bloco de comandos enquanto uma condio for verdadeira, ou at uma condio se tornar verdadeira. Sintaxe: Do [condio] '(While | Until) [comandos] [Exit Do] [comandos] Loop Ou: Do [comandos] [Exit Do] [comandos] Loop [condio] '(While | Until) Exemplo 1: intContador = 0 Do while intContador < 5 MsgBox(Valor do Contador: & intContador) intContador = intContador + 1 Loop Exemplo 2: intContador = 0 Do Until intContador = 5 MsgBox(Valor do Contador: & intContador) 18 - RISK MANAGEMENT

intContador = intContador + 1 Loop

F UNES E P ROCEDIMENTOS
Muitas funcionalidades em um programa so executadas mais de uma vez. Com isso, surge a necessidade de se criar pedaos de cdigos que executam tarefas especficas. Isto facilita o entendimento do programa, alm de diminuir a quantidade de linhas de cdigo, facilitando a manuteno e novas implementaes. Podemos dividir o programa em partes menores denominadas Funes e Procedimentos. Podemos identificar uma funo em VBA como sendo o cdigo que ser executado entre os comandos Function e End Function, enquanto procedimentos so identificados pelos comandos Sub e End Sub. Sintaxe: Sub procedimento() [Corpo do Procedimento] End Sub Podemos chamar o procedimento usando o comando Call. Ex: Call procedimento() possvel chamar o procedimento sem o comando Call. Neste caso no usamos o parnteses. Ex: procedimento 19 - RISK MANAGEMENT

Diferenas
A diferena bsica entre uma funo e um procedimento muito simples. A funo retorna um valor de algum tipo, enquanto o procedimento no retorna valor. Os tipos de valores para o retorno de uma funo so os mesmos definidos para uma varivel, ou seja, uma funo pode retornar um tipo Integer, String ou at mesmo um Objeto. Sintaxe: Function funcao() As Integer [Corpo da Funo] End Function

Quando usar?
fundamental realizar a diviso do programa em tarefas menores, de modo a deixar o cdigo limpo e organizado. Sendo assim, usamos funes e procedimentos para definirmos tais tarefas. Caso haja necessidade de retorno de valor, usamos funes. Caso contrrio, usamos procedimentos.

Passagem de Parmetros
Funes e procedimentos podem receber parmetros de entrada, o que no obrigatrio, mas ocorre na maioria das vezes. Assim como o retorno de uma funo, parmetros devem ter um tipo definido. Sintaxe: Function funcao(parametro As Integer) As String [Corpo da Funo] End Function 20 - RISK MANAGEMENT

Passagem de parmetros: Referncia X Valor


Um parmetro pode ser passado para uma funo ou procedimento de duas formas: por valor ou por referncia. Por Valor Uma forma de passar o valor de um argumento a um procedimento em vez de passar o endereo. Permite que o procedimento acesse uma cpia da varivel. Como resultado, o valor real da varivel no pode ser alterado pelo procedimento ao qual passado. Usamos o comando ByVal pare definir que um parmetro ser passado por valor. Exemplo: Sub principal() Dim meuNumero As Integer meuNumero = 2 somaUm meuNumero MsgBox ("Valor da variavel meuNumero: " & meuNumero) End Sub Sub somaUm(ByVal valor As Integer) valor = valor + 1 End Sub Valor da varivel meuNumero: 2

21

- RISK MANAGEMENT

Por Referncia Uma forma de passar o endereo de um argumento a um procedimento em vez de passar o valor. Isso permite que o procedimento acesse a varivel real. Como resultado, o valor real da varivel pode ser alterado pelo procedimento ao qual passado. A menos que especificado o contrrio, os argumentos so passados por referncia. Usamos o comando ByRef pare definir que um parmetro ser passado por valor. Exemplo: Sub principal() Dim meuNumero As Integer meuNumero = 2 somaUm meuNumero MsgBox ("Valor da variavel meuNumero: " & meuNumero) End Sub Sub somaUm(ByRef valor As Integer) valor = valor + 1 End Sub Valor da varivel meuNumero: 3

Parmetros Opcionais
Para definir um parmetro opcional em um procedimento ou funo, usamos o comando Optional.

22

- RISK MANAGEMENT

Exemplo: Sub principal(ByVal param1 As Integer, Optional param2 As Strting) O exemplo abaixo mostra uma chamada vlida para o procedimento. Call principal(2)

Variveis locais X Variveis globais


O escopo de atuao das variveis de um programa varia de acordo com o local de declarao da mesma. Variveis definidas dentro de uma funo, por exemplo, s podem ser acessadas no escopo daquela funo. Estas so denominadas variveis locais. Entretanto, podemos ter variveis que so acessadas por todas as funes ou procedimentos. Para isso devemos declarar a varivel no incio do mdulo VBA. Desta forma, o contedo da varivel pode ser modificado em qualquer lugar do programa. Estas so denominadas variveis globais. Exemplo: Dim varGlobal As Integer Sub proc1() Dim varLocal1 As Integer varLocal1 = 5 varGlobal = 3 proc2 MsgBox(Valor de varGlobal: & varGlobal) End Sub Sub proc2() Dim varLocal2 as Integer 23

- RISK MANAGEMENT

MsgBox(Valor de varGlobal: & VarGlobal) varGlobal = VarGlobal + 5 End Sub

F UNES MATEMTICAS
As funes matemticas so muito utilizadas em programas estatsticos e financeiros. A tabela abaixo lista as funes bsicas. O captulo referente a propriedades e mtodos do Excel abordar funes matemticas mais complexas. Funo Abs Atn Cos Exp Fix Int Log Rnd Sgn Descrio Retorna o valor absoluto do nmero Retorna o valor do arco tangente do nmero Retorna o valor do cosseno do nmero Retorna o valor de e elevado a uma determinada potncia Retorna a parte inteira do nmero. Exemplo: Fix(-7,4) = -8 Retorna a parte inteira do nmero. Exemplo: Int(-7,4) = -7 Retorna o logaritmo natural do nmero Retorna um nmero aleatrio Retorna o sinal do nmero. -1, se o nmero for menor que 0 0, se o nmero for igual a 0 1, se o nmero for maior que 0 Sin Sqr Tan Retorna o valor do seno do nmero. Retorna o valor da raiz quadrada do nmero. Retorna o valor da tangente do nmero.

24

- RISK MANAGEMENT

F UNES DIVERSAS
Algumas funes so muito utilizadas nos programas, especialmente aquelas que apresentam algum tipo de caixa de dilogo e permitem a interao, em tempo de execuo, com o usurio.

MsgBox

Exibe uma mensagem em uma caixa de dilogo, e aguarda que o usurio clique em um boto. Um Integer retornado indicando qual boto o usurio clicou.

Exemplo:

Dim intRetorno As Integer

intRetorno = MsgBox("Deseja continuar?", _ vbYesNo + vbQuestion, "Pergunta") If (intRetorno = vbYes) Then MsgBox ("Aguarde, o programa ir continuar.") Else MsgBox ("Fim da Execuo.") End If

InputBox 25 - RISK MANAGEMENT

Exibe um aviso em uma caixa de dilogo, aguarda at que o usurio insira algum texto ou clique em um boto e retorna uma String com o contedo da caixa de texto.

Exemplo:

Dim strRetorno, strMsg As String

strRetorno = InputBox("Digite o seu nome", _ "Entrada de Dados") strMsg = "O nome digitado foi " & strRetorno MsgBox (strMsg)

F UNES DE CONVERSO
Como vimos anteriormente, uma varivel pode ser de vrios tipos. Em alguns casos quereremos converter uma varivel String para uma varivel inteira, por exemplo. As funes de converso so muito utilizadas e convertem uma varivel de um tipo para outro. Caso a funo no consiga converter, um erro gerado. A tabela abaixo mostra as funes de converso mais usadas e suas respectivas sintaxes. Descrio Converte uma expresso para um tipo Double Converte uma expresso para um tipo Integer Converte uma expresso para um tipo String 26 Sintaxe cDbl(exp) cInt(exp) cStr(exp) - RISK MANAGEMENT

Converte uma expresso para um tipo Date Exemplo: Dim valorNumerico As Double valorNumerico = cDbl(4,56)

cDate(exp)

STRINGS
Variveis do tipo String so muito usadas em programas e muitas vezes tm que ser manipuladas, para que possamos chegar ao resultado desejado. Existem muitas funes no VBA que permitem esta manipulao. As principais funes de manipulao so: Instr A varivel String pode ser considerada um Array de Caracteres. Cada caracter da String uma posio no Array. Podemos localizar um ou mais caracteres utilizando a funo InStr(). Sintaxe: [posicao]=InStr([posicaoInicial],[varPesquisada],[caracterPesquisa],[tipoPesqu isa]) onde: posicaoInicial: Posio de incio da pesquisa. varPesquisada: String a ser pesquisada. 27 - RISK MANAGEMENT

caracterPesquisa: Caracter (ou String) a ser encontrado. tipoPesquisa: Tipo de pesquisa (para comparao de texto, usa-se vbTextCompare). Exemplo: strSeparador = strTelEmpresa = 55555555 Mellon Brascan intPosicao = InStr(1, strTelEmpresa, strSeparador, vbTextCompare) MsgBox(Polsio do Separador: & intPosicao) Mid A funo Mid retorna uma parte da String delimitada pelos parmetros de entrada [posicaoInicial], [tamanhoExtracao]. Sintaxe: [extracao] = Mid([variavel], [posicaoInicial], [tamanhoExtracao]) Onde: [variavel] = String. [posicaoInicial] = posio do primeiro caracter que deve ser extrado de [variavel]. [tamanhoExtracao] = quantidade de caracteres que devem ser extrados. Exemplo: strTelEmpresa = 55555555 Mellon Brascan strTelReal = Mid(strTelEmpresa, 1, 8) Msgbox(Telefone real da empresa: & strTelReal)

28

- RISK MANAGEMENT

Trim Podemos eliminar os caracteres no incio e final de uma varivel String, utilizando a funo trim(). Sintaxe: [varSemEspaco] = Trim([varComEspaco]) Exemplo: strTelEmpresa = 55555555 Mellon Brascan strTelReal = Trim(Mid(strTelEmpresa, 1, 9)) Msgbox(Telefone real da empresa: & strTelReal)

MACROS
Macros so seqncias de comandos e funes definidos usando a linguagem de programao VBA, que automatizam tarefas realizadas no aplicativo Microsoft Excel.

Como criar
Para criar uma Macro, deve-se acessar o menu Ferramentas > Macro > Macros.

29

- RISK MANAGEMENT

Figura 1 - Exemplo de Criao de uma M acro no Editor do Excel

Clicando na opo de menu Macros, uma nova janela ser aberta. O usurio poder nomear a Macro e apertar o boto Criar, que abrir o editor de cdigo Visual Basic e permitir a edio da Macro criada.

30

- RISK MANAGEMENT

Figura 2 - O editor de Visual Basic

Gerao de Macros pelo Excel


O Excel permite que o usurio grave um conjunto de tarefas realizado na planilha em um procedimento, ou seja, em uma Macro. Para isso, deve-se acessar o menu Ferramentas > Macro > Gravar Nova Macro. A partir da, todas as aes que o usurio fizer na planilha sero convertidas em comandos Visual Basic. Para finalizar a gravao da nova Macro, deve-se

31

- RISK MANAGEMENT

acessar o menu Ferramentas > Macro > Parar Gravao. A Macro gerada realizar exatamente todos os comandos feitos pelo usurio.

Como executar uma Macro na abertura do arquivo


possvel executar uma determinada Macro na abertura do arquivo Excel. Para isso, o procedimento deve ter o nome Auto_Open. Exemplo: Sub Auto_Open() MsgBox(Procedimento executado na abertura do arquivo.) End Sub

Associando objetos a Macros


Podemos utilizar os objetos de desenho do Excel como links para execuo de macros. Os objetos de desenho so acessados a partir da barra de ferramentas Desenho. Para associar um objeto desenho produzido a uma macro, deve-se clicar com o boto direito do mouse a escolher a opo Atribuir Macro.

32

- RISK MANAGEMENT

Figura 3 - Como associar uma Macro a um objeto Desenho

Como executar passo a passo


Uma forma muito til de analisarmos o cdigo de um programa e descobrir possveis falhas, executar os comandos passo a passo, ou seja, um de cada vez. O editor de cdigo Visual Basic permite a execuo passo a passo, a partir do menu Depurar. A opo de menu Depurao Total incializa a execuo do programa. possvel, desta forma, visualizar exatamente o que est acontecendo. Para executar uma nova instruo, a opo de menu Depurao Total deve ser acionada novamente. 33 - RISK MANAGEMENT

Pontos de parada em uma Macro


Muitas vezes, os programas so muito extensos e no possvel realizar uma depurao passo a passo em todo cdigo. Neste caso, deve-se usar pontos de parada. O programa que contm um ponto de parada, executa o cdigo passo a passo a partir do comando que contm a marca para parar. Os prximos comandos podem ser executados um de cada vez, facilitando a depurao. Para inserir ou retirar um ponto de parada em um comando, utiliza-se a opo Ativar/Desativar ponto de interrupo no menu Depurar.

Figura 4 - Exemplo de execuo de um programa com ponto de parada

34

- RISK MANAGEMENT

Visualizao de valores de variveis em tempo de execuo


Na figura 4, possvel visualizar o valor de sigma, porque o cursor est em cima da varivel. No entanto, possvel visualizar o valor de mais de uma varivel ao mesmo tempo, utilizando a opo de menu Adicionar inspeo de variveis a partir do menu Depurar. Quando o programa for depurado, ser possvel a visualizao do valor das variveis em uma janela separada.

OS P RINCIPAIS OBJETOS DO EXCEL


O excel permite o acesso a qualquer funcionalidade em um programa VBA, atravs dos mtodos e propriedades dos seus objetos. Estes esto distribudos de forma organizada como podemos verificar na figura abaixo.

35

- RISK MANAGEMENT

Figura 5 - Diagrama de Objetos do Microsoft Excel

Application
O objeto Application representa todo o aplicativo Microsoft Excel e contm a maioria das opes de configuraes e definies do aplicativo como um todo. Muitas propriedades e mtodos deste objeto podem ser referenciados sem o qualificador de objeto Application. Exemplo: 36 - RISK MANAGEMENT

Application.ActiveWorkbook.Save Pode ser escrito como: ActiveWorkbook.Save

Wor kbook
O objeto Workbook representa uma pasta de trabalho do Microsoft Excel, ou seja, um arquivo Excel. possvel acessar um objeto Workbook atravs da coleo Workbooks (objeto Application), que contm todas as pastas de trabalho abertas. As propriedades ActiveWorkbook e ThisWorkbook tambm apontam para um objeto do tipo Workbook. ActiveWorkbook aponta para a pasta de trabalho que est ativa, enquanto a propriedade ThisWorkbook aponta para a pasta de trabalho onde o cdigo do Visual Basic est sendo executado. Exemplo: Mostra o nome da pasta de trabalho ativa MsgBox(ActiveWorkbook.Name)

Worksheet
O objeto Worksheet representa uma planilha do Microsoft Excel. Da mesma forma que ocorre com o objeto Workbook, existe uma coleo de objetos Worksheet, acessada a partir do objeto Workbook, denominada Worksheets. A propriedade ActiveSheet aponta para a pasta de trabalho que est ativa. 37 - RISK MANAGEMENT

Exemplo: Mostra o nome da planilha ativa MsgBox(ActiveSheet.Name)

Figura 6 - Diagrama de Objetos do Microsoft Excel a partir do Objeto Worksheet

Range
O objeto range representa uma clula ou um intervalo de clulas. Este intervalo pode ser contguo ou no, pode representar uma ou mais linhas, uma ou mais colunas.

38

- RISK MANAGEMENT

Muitas das funcionalidades da linguagem VBA so executadas a partir do objeto Range, por isso ele um dos mais importantes e usados. Exemplo: Worksheets("Dados").Range("C1").Value = ndices das Empresas Set rangeInicial = Worksheets("Dados").Range( _ Worksheets("Dados").Cells(1,1), Worksheets("Dados").Cells(1,10))

Cells
O objeto Cells permite o acesso a uma clula (assim como o objeto Range). Para isso, necessrio informar a linha e a coluna da clula desejada. Exemplo: Worksheets("Dados").Cells(1, 3).Value = ndices das Empresas

Collection
O objeto Collection um conjunto ordenado de itens, no necessariamente do mesmo tipo, que se pode fazer referncia atravs de uma chave (identificador) ou posio. Exemplo: Sub subOrdenacaoExcel() Dim rngMyRange As Range Uso do objeto Collection para retornar o objeto Worksheet identificado por Ordenacao Set rngMyRange = Worksheets("Ordenacao").Range("A1:A15") 39 - RISK MANAGEMENT

rngMyRange.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo End Sub

Chart
O objeto Chart representa um grfico em uma determinada pasta de trabalho. Um grfico pode estar incorporado em um ChartObject ou uma folha de grfico separada. O objeto Charts representa a coleo de todos os objetos do tipo Chart ativos no Microsoft Excel. Exemplo: Charts("chart1").Activate

40

- RISK MANAGEMENT

Figura 7 - Diagrama de Objetos do Microsoft Excel a partir do Objeto Chart

P ROPRIEDADES E MTODOS
Definies
As propriedades dos objetos so responsveis por armazenar determinados atributos. Elas so as caracactersticas de um Objeto. Mtodos so servios disponibilizados pelos objetos e so responsveis por realizar tarefas como, por exemplo, a mudana de uma determinada propriedade.

41

- RISK MANAGEMENT

Principais propriedades dos principais objetos


Application

ActiveWorkbook: Retorna o objeto Workbook (pasta de trabalho) que est ativo. Retorna Nothing se no houver janelas abertas.

ActiveSheet: Retorna o objeto referente a planilha ativa. Se nenhuma planilha estiver ativa, a propriedade retorna Nothing.

ActiveCell: Retorna a clula ativa da planilha ativa. Se nenhuma clula estiver ativa, a propriedade retorna Nothing.

Selection: A propriedade Selection retorna o objeto selecionado (geralmente um objeto do tipo Range) da janela ativa.

Worksheet

Cells: Retorna todas as clulas da planilha representada pelo objeto Worksheet. possvel referenciar a uma nica clula, especificando o ndice da linha e da coluna da clula. Exemplo: whsDados.Cells(1,1).Value

Name: Corresponde ao nome da planilha.

Chart

ChartTitle: Retorna um objeto ChartTitle grfico especificado. Somente leitura.

representando o ttulo do

HasLegend: Indica se o grfico contm uma Legenda. Exemplo: chaGrafico.HasLegend = true

Visible: Indica se o objeto est visvel. Exemplo: chaGrafico.Visible = true 42 - RISK MANAGEMENT

Principais mtodos dos principais objetos


Worksheet

Activate: Ativa o objeto Worksheet. Exemplo: whsDados.Activate

Collection

Add: Adiciona um item coleo. Exemplo: colCurso.Add(VBA, Curso de VBA)

Remove: Remove um item da coleo. Exemplo: colCurso.Remove(VBA)

Range

Sort: Ordena as clulas definidas pelo objeto Range. Exemplo: rngMyRange.Sort Key1:=Range("A1"), _ Order1:=xlAscending, Header:=xlNoRemove(VBA)

T RATAMENTO DE ERROS
Os erros em tempo de execuo dos programas devem ser tratados com muito cuidado, de modo a oferecer o mximo de informao, seja para o usurio ou para o programador.

Como tratar um erro no programa


O Excel permite o tratamento de erros atravs do comando On Error.

43

- RISK MANAGEMENT

O comando On Error H algumas formas de utilizar o comando On Error, dentre as quais, destacam-se:

On Error GoTo [Destino]

O comando indica, que caso ocorra um erro, o procedimento ou funo ir continuar a execuo da linha ou rtulo referenciado por [Destino].

Exemplo:

Sub calculaPreco() Dim num1, num2 as Integer Dim resultado as Double On Error GoTo Erro num1 = 12 num2 = 0 resultado = num1 / num2 Ocorrer um erro MsgBox(Fim do procedimento.) Comando no ser executado Exit Sub Erro: MsgBox(Ocorreu um Erro no procedimento.) End Sub

On Error Resume Next 44 - RISK MANAGEMENT

O comando indica, que caso ocorra um erro, o procedimento ir executar a instruo logo aps quela que ocorreu o erro.

Exemplo:

Sub calculaPreco() Dim num1, num2 as Integer Dim resultado as Double On Error Resume Next num1 = 12 num2 = 0 resultado = num1 / num2 Ocorrer um erro MsgBox(Fim do procedimento.) Comando ser executado End Sub

On Error GoTo 0

O comando desabilita o tratamento de erro do procedimento.

Exemplo:

Sub calculaPreco() 45 - RISK MANAGEMENT

Dim num1, num2 as Integer Dim resultado as Double On Error GoTo 0 num1 = 12 num2 = 0 resultado = num1 / num2 Ocorrer um erro MsgBox(Fim do procedimento.) Comando no ser executado End Sub

46

- RISK MANAGEMENT

Anda mungkin juga menyukai