Você está na página 1de 46

A POSTILA DE VBA

PARA EXCEL

MARCOS DE BARROS

OUTUBRO DE 2002

1 - RISK MANAGEMENT
Í NDICE
I NTRODUÇÃO AO VBA ____________________________________________________ 5
Constantes___________________________________________________________ 5
Variáveis ____________________________________________________________ 5
Tipos de variáveis e constantes _______________________________________ 6
O Comando Option Explicit ____________________________________________ 7
Comentários _________________________________________________________ 7
Operadores __________________________________________________________ 7
Arrays ______________________________________________________________ 10
Estrutura de dados __________________________________________________ 12
F LUXOS DE CONTROLE __________________________________________________ 12
Expressões condicionais _____________________________________________ 13
Loops _______________________________________________________________ 16
F UNÇÕES E P ROCEDIMENTOS _____________________________________________ 19
Diferenças __________________________________________________________ 20
Quando usar? _______________________________________________________ 20
Passagem de Parâmetros ____________________________________________ 20
Passagem de parâmetros: Referência X Valor _________________________ 21
Parâmetros Opcionais _______________________________________________ 22
Variáveis locais X Variáveis globais __________________________________ 23
F UNÇÕES MATEMÁTICAS _________________________________________________ 24
F UNÇÕES DIVERSAS _____________________________________________________ 25
F UNÇÕES DE CONVERSÃO ________________________________________________ 26
STRINGS _______________________________________________________________ 27
MACROS _______________________________________________________________ 29
Como criar__________________________________________________________ 29
Geração de Macros pelo Excel ________________________________________ 31
Como executar uma Macro na abertura do arquivo ____________________ 32
Associando objetos a Macros _________________________________________ 32
Como executar passo a passo ________________________________________ 33
Pontos de parada em uma Macro _____________________________________ 34
Visualização de valores de variáveis em tempo de execução ___________ 35
OS P RINCIPAIS OBJETOS DO EXCEL _______________________________________ 35
Application __________________________________________________________ 36
Workbook ____________________________________________________________ 37
Worksheet __________________________________________________________ 37
2 - RISK MANAGEMENT
Range ______________________________________________________________ 38
Cells ________________________________________________________________ 39
Collection ___________________________________________________________ 39
Chart _______________________________________________________________ 40
P ROPRIEDADES E MÉTODOS ______________________________________________ 41
Definições ___________________________________________________________ 41
Principais propriedades dos principais objetos ________________________ 42
Principais métodos dos principais objetos _____________________________ 43
T RATAMENTO DE ERROS _________________________________________________ 43
Como tratar um erro no programa ____________________________________ 43

3 - RISK MANAGEMENT
Í NDICE DE F IGURAS

Figura 1 - Exemplo de Criação 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 execução 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

4 - RISK MANAGEMENT
I NTRODUÇÃO AO VBA
VBA (Visual Basic for Application) é uma linguagem de programação
utilizada utilizada para desenvolver programas executados nos principais
softwares do pacote Office (Access, Excel, Word, Power Point) da Microsoft.
Uma linguagem de programação permite montarmos programas que
auxiliam tarefas do dia a dia de seus usuários.

Constantes
Uma constante representa um valor fixo, ou seja, que não é mudado ao longo
da execução do programa.

Para declarar uma constante no VBA, usamos o comando Const. O valor e o


tipo de dados são atribuídos em uma mesma linha de comando.

Exemplo:

Const Valor_Pi As Double = 3,14

Variáveis
Qualquer quantidade que muda de valor no decorrer de um programa é
chamada de variável. Para cada variável, damos uma representação
simbólica, ou nome, para que ela possa ser identificada no programa.

O local e a forma de criação define o escopo da variável, ou seja, onde esta


pode ser visualizada dentro do programa.

5 - RISK MANAGEMENT
A declaração de uma variável em VBA é feita usando o comando Dim em
qualquer local do procedimento, porém é comum os programadores
declararem todas as variáveis logo no início do procedimento.

Exemplo:

Dim juros As Double


Dim nome, sobrenome As String

Tipos de variáveis e constantes


Em VBA, assim como em todas as linguagens de programação, cada variável
ou constante contém um tipo de dados específico.

Tipo de Dado Descrição Possíveis Valores


Boolean Permite armazenar valores Booleanos True ou False
Byte Permite armazenar números em módulo 0 a 255
Currency Permite armazenar moeda -
Date Permite armazenar datas Qualquer data que pode ser
reconhecida pelo Excel
Double Permite armazenar números reais -1.79769313486232E308 a
1.79769313486232E308
Single Permite armazenar números reais -3.402823E38 a
3.402823E38
Integer permite armazenar números inteiros -32.768 e 32767
Long permite armazenar números inteiros -2 147 483 648 a 2 147 483
648
Object utilizado para fazer referência a um -
objeto do Excel
String permite armazenar conjuntos de Textos em geral
caracteres
Variant permite armazenar qualquer tipo de dado -
User-Defined permite armazenar valores de tipos -
definidos pelo usuário
Obs: Usa-se o caracter # para atribuir data (ex: dteInicio = #07/01/2002 11:00#)

6 - RISK MANAGEMENT
O Comando Option Explicit
Na realidade, a declaração de variáveis é necessária em um programa VBA,
caso o programador use o comando Option Explicit no início do módulo. Caso
contrário, não é necessário a declaração das variáveis utilizadas que
recebem, então, o tipo Variant.

Exemplos:

Option Explicit

Sub calculaMedia()
Dim dblMedia as Double

Comentários
Comentários devem ser feitos para ajudar o entendimento do código,
auxiliando manutenções e modificações futuras. Podemos realizar
comentários no VBA utilizando o caracter ‘.

Exemplos:

Sub calculaMedia()
‘ Comentário: Declaração de Variáveis
Dim dblMedia as Double

Operadores
O VBA utiliza alguns operadores, que permitem a realização de comparações,
atribuições, etc. Podemos dividir os operadores nas seguintes categorias:

7 - RISK MANAGEMENT
Aritméticos

Utilizados em cálculos e expressões matemáticas.

Operador Representação Sintaxe


Soma + [Número 1] + [Número 2]
Subtração - [Número 1] - [Número 2]
Multiplicação * [Número 1] * [Número 2]
Divisão / [Número] / [Divisor]
Expoente ^ [Número] ^ [Expoente]
Divisão Inteira \ [Número] \ [Divisor]
Mod Resto Mod [Número] \ [Divisor]

Atribuição

Apenas um operador faz parte desta categoria. Este operador é utilizado para
atribuir valores a variáveis.

Operador Representação Sintaxe


Atribuição = [Variável] = [Valor]

Comparação

Utilizado na maioria das vezes em expressões de fluxo de controle (ver seção


Fluxo de Controle), para comparar valores ou variáveis. Retornam TRUE ou
FALSE.

Operador Representação Sintaxe


Menor que < [Variável] < [Valor]
Menor ou igual que <= [Variável] <= [Valor]
Maior que > [Variável] > [Valor]
Maior ou igual que >= [Variável] >= [Valor]
Igual = [Variável] = [Valor]
Diferente <> [Variável] <> [Valor]
Igual (objetos) Is [Object 1] Is [Object 2]

8 - RISK MANAGEMENT
Concatenação

Utilizados para concatenar duas variáveis do tipo String.

Operador Representação Sintaxe


Concatenação & [Variável 1] & [Variável 2]
Concatenação + [Variável 1] + [Variável 2]

É recomendável o uso do operador & para evitar ambigüidade.

Lógicos

Utilizados em expressões lógicas. Retornam TRUE ou FALSE

Operador Representação Sintaxe


AND AND [Variável 1] AND [Variável 2]
OR OR [Variável 1] OR [Variável 2]
NOT NOT NOT [Variável 1]
XOR XOR [Variável 1] XOR [Variável 2]

Abaixo seguem o resultados das expressões, utilizando cada operador.


Podemos chamar as tabelas abaixo de Tabela Verdade.

Tabela Verdade para o operador AND

Expressão 1 Expressão 2 Expressão 1 AND Expressão 2


TRUE TRUE TRUE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE FALSE

Tabela Verdade para o operador OR

Expressão 1 Expressão 2 Expressão 1 OR Expressão 2


TRUE TRUE TRUE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE

Tabela Verdade para o operador NOT


9 - RISK MANAGEMENT
Expressão 1 NOT Expressão 1
TRUE FALSE
FALSE TRUE

Tabela Verdade para o operador XOR

Expressão 1 Expressão 2 Expressão 1 XOR Expressão 2


TRUE TRUE FALSE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE

Arrays
Variável que contém uma lista de valores do mesmo tipo.

O limite da lista pode ser informado na declaração da variável. O primeiro


valor do Array corresponde a posição 0 (zero).

Exemplo:

Dim arrEmpresas(10) as String

arrEmpresas(0) = “Mellon Brascan”


arrEmpresas(1) = “Foco Informática”

Arrays Multidimensionais

O Array pode ser multi-dimensional. A sintaxe de um Array de duas


dimensões seria:

Dim [Nome da Variável](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 também pode ser dimensionado, de acordo com a necessidade. A


declaração deve ser feita sem a informação do limite do Array.

É necessário dimensionar o Array, antes de atribuir valores. Para isso, usa-


se o comando ReDim.

Exemplo:

Dim arrEmpresas() as String

Redim arrEmpresas(1)

arrEmpresas(0) = “Mellon Brascan”


arrEmpresas(1) = “Shell Brasil”

Caso o Array dinâmico já tenha sido dimensionado, usamos a mesma sintaxe


para redimensioná-lo. Para manter os valores já atribuídos deve-se usar o
comando Preserve. No entanto, só será possível aumentar a sua dimensão.

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 Informática”

Estrutura de dados
Em alguns casos, os tipos de dados existentes na linguagem não são
satisfatórios. É possível criar tipos definidos pelo programador.

Exemplo:

É necessário ter sempre no programa, o nome e o CNPJ da empresa. Cria-se,


então, um tipo Empresa.

Type Empresa
RazaoSocial as String
CNPJ as String
End Type

Podemos definir uma variável do tipo Empresa.


Dim empresaAtual as Empresa

É possível 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 seção as instruções de controle que afetam o fluxo de
execução de um programa e são amplamente utilizadas. Um programa é

12 - RISK MANAGEMENT
executado de diversas formas, de acordo com parâmetros de entrada e
estados de variáveis. O fluxo de execução de um programa é controlado,
basicamente, através de decisões (utilização de expressões condicionais) e
repetição de instruções (loops).

Sendo assim, podemos dividir as instruções de fluxo de controle em duas


categorias: as expressões condicionais e os loops.

Expressões condicionais

If-Then-Else
É a expressão condicional mais utilizada.

Sintaxe:

If ([Condição]) Then
[Comandos 1]
Else
[Comandos 2]

Se a condição definida for verdadeira, os comandos definidos em [Comandos


1] serão executados. Se a condição for falsa, o bloco [Comandos 2] será
executado.

Exemplo:

If (intNumero >= 0) Then


strMensagem = “A variável é positiva”
Else
strMensagem = “A variável é negativa”
MsgBox(strMensagem)
13 - RISK MANAGEMENT
Existem casos em que temos mais do que apenas duas possibilidades. Sendo
assim, podemos usar a instrução ElseIf.

Exemplo:

If ([Condição 1]) Then


[Comandos 1]
ElseIf ([Condição 2]) Then
[Comandos 2]
Else
[Comandos 3]

Os blocos de comandos [Comandos 1] ou [Comandos 2] serão executados,


caso as condições [Condição 1] e [Condição 2] forem verdadeiras,
respectivamente. Caso contrário, [Comandos 3] será executado.

Exemplo:

If (intNumero > 0) Then


strMensagem = “A variável é positiva”
ElseIf (intNumero < 0) Then
strMensagem = “A variável é negativa”
Else
strMensagem = “A variável tem o valor zero.”
MsgBox(strMensagem)

Case
Utilizado em expressões condicionais, onde há mais de duas possibilidades.

Sintaxe:

14 - RISK MANAGEMENT
Select Case [expressão]

[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 expressões com


várias possibilidades.

Exemplo 1:

Select Case intNumero


Case Is > 0
strMensagem = “A variável é positiva”
Case Is < 0
strMensagem = “A variável é negativa”
Case Else
strMensagem = “A variável 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 “Serviços”
15 - RISK MANAGEMENT
MsgBox(“Empresa do ramo de serviços”)
Case Else
MsgBox(“Não identificado”)
End Select

Loops
Um loop permite a execução de um conjunto de comandos repetidamente.
Alguns loops são executados até uma condição se tornar falsa, outros até a
condição ser verdadeira. Existem ainda loops que permitem a execução de
um bloco de comandos um número fixo de vezes.

While

Executa um bloco de comandos enquanto uma condição for verdadeira.

Sintaxe:

While [condição]
[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 número determinado de vezes.

Sintaxe:

For i = [início] 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 variável e o valor desta
variável for mudado ao longo do loop, a quantidade de iterações não 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 condição for verdadeira, ou


até uma condição se tornar verdadeira.

Sintaxe:

Do [condição] '(While | Until)


[comandos]
[Exit Do]
[comandos]
Loop

Ou:

Do
[comandos]
[Exit Do]
[comandos]
Loop [condição] '(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 UNÇÕES E P ROCEDIMENTOS
Muitas funcionalidades em um programa são executadas mais de uma vez.
Com isso, surge a necessidade de se criar pedaços de códigos que executam
tarefas específicas. Isto facilita o entendimento do programa, além de
diminuir a quantidade de linhas de código, facilitando a manutenção e novas
implementações.

Podemos dividir o programa em partes menores denominadas Funções e


Procedimentos.

Podemos identificar uma função em VBA como sendo o código que será
executado entre os comandos Function e End Function, enquanto
procedimentos são 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()

É possível chamar o procedimento sem o comando Call. Neste caso não


usamos o parênteses.

Ex: procedimento

19 - RISK MANAGEMENT
Diferenças
A diferença básica entre uma função e um procedimento é muito simples. A
função retorna um valor de algum tipo, enquanto o procedimento não
retorna valor. Os tipos de valores para o retorno de uma função são os
mesmos definidos para uma variável, ou seja, uma função pode retornar um
tipo Integer, String ou até mesmo um Objeto.

Sintaxe:

Function funcao() As Integer


[Corpo da Função]
End Function

Quando usar?
É fundamental realizar a divisão do programa em tarefas menores, de modo
a deixar o código limpo e organizado. Sendo assim, usamos funções e
procedimentos para definirmos tais tarefas. Caso haja necessidade de
retorno de valor, usamos funções. Caso contrário, usamos procedimentos.

Passagem de Parâmetros
Funções e procedimentos podem receber parâmetros de entrada, o que não é
obrigatório, mas ocorre na maioria das vezes. Assim como o retorno de uma
função, parâmetros devem ter um tipo definido.

Sintaxe:

Function funcao(parametro As Integer) As String


[Corpo da Função]
End Function

20 - RISK MANAGEMENT
Passagem de parâmetros: Referência X Valor
Um parâmetro pode ser passado para uma função ou procedimento de duas
formas: por valor ou por referência.

Por Valor

Uma forma de passar o valor de um argumento a um procedimento em vez


de passar o endereço. Permite que o procedimento acesse uma cópia da
variável. Como resultado, o valor real da variável não pode ser alterado pelo
procedimento ao qual é passado.

Usamos o comando ByVal pare definir que um parâmetro 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 variável meuNumero: 2

21 - RISK MANAGEMENT
Por Referência

Uma forma de passar o endereço de um argumento a um procedimento em


vez de passar o valor. Isso permite que o procedimento acesse a variável real.
Como resultado, o valor real da variável pode ser alterado pelo procedimento
ao qual é passado. A menos que especificado o contrário, os argumentos são
passados por referência.

Usamos o comando ByRef pare definir que um parâmetro 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 variável meuNumero: 3

Parâmetros Opcionais
Para definir um parâmetro opcional em um procedimento ou função, usamos
o comando Optional.

22 - RISK MANAGEMENT
Exemplo:
Sub principal(ByVal param1 As Integer, Optional param2 As Strting)

O exemplo abaixo mostra uma chamada válida para o procedimento.


Call principal(2)

Variáveis locais X Variáveis globais


O escopo de atuação das variáveis de um programa varia de acordo com o
local de declaração da mesma. Variáveis definidas dentro de uma função, por
exemplo, só podem ser acessadas no escopo daquela função. Estas são
denominadas variáveis locais.

Entretanto, podemos ter variáveis que são acessadas por todas as funções ou
procedimentos. Para isso devemos declarar a variável no início do módulo
VBA. Desta forma, o conteúdo da variável pode ser modificado em qualquer
lugar do programa. Estas são denominadas variáveis 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 UNÇÕES MATEMÁTICAS
As funções matemáticas são muito utilizadas em programas estatísticos e
financeiros. A tabela abaixo lista as funções básicas. O capítulo referente a
propriedades e métodos do Excel abordará funções matemáticas mais
complexas.

Função Descrição
Abs Retorna o valor absoluto do número
Atn Retorna o valor do arco tangente do número
Cos Retorna o valor do cosseno do número
Exp Retorna o valor de e elevado a uma determinada potência
Fix Retorna a parte inteira do número. Exemplo: Fix(-7,4) = -8
Int Retorna a parte inteira do número. Exemplo: Int(-7,4) = -7
Log Retorna o logaritmo natural do número
Rnd Retorna um número aleatório
Sgn Retorna o sinal do número.
-1, se o número for menor que 0
0, se o número for igual a 0
1, se o número for maior que 0
Sin Retorna o valor do seno do número.
Sqr Retorna o valor da raiz quadrada do número.
Tan Retorna o valor da tangente do número.

24 - RISK MANAGEMENT
F UNÇÕES DIVERSAS
Algumas funções são muito utilizadas nos programas, especialmente aquelas
que apresentam algum tipo de caixa de diálogo e permitem a interação, em
tempo de execução, com o usuário.

θ MsgBox

Exibe uma mensagem em uma caixa de diálogo, e aguarda que o usuário


clique em um botão. Um Integer é retornado indicando qual botão o
usuário 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 Execução.")

End If

θ InputBox

25 - RISK MANAGEMENT
Exibe um aviso em uma caixa de diálogo, aguarda até que o usuário
insira algum texto ou clique em um botão e retorna uma String com o
conteúdo 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 UNÇÕES DE CONVERSÃO
Como vimos anteriormente, uma variável pode ser de vários tipos. Em alguns
casos quereremos converter uma variável String para uma variável inteira,
por exemplo. As funções de conversão são muito utilizadas e convertem uma
variável de um tipo para outro. Caso a função não consiga converter, um
erro é gerado. A tabela abaixo mostra as funções de conversão mais usadas e
suas respectivas sintaxes.

Descrição Sintaxe
Converte uma expressão para um tipo Double cDbl(exp)
Converte uma expressão para um tipo Integer cInt(exp)
Converte uma expressão para um tipo String cStr(exp)
26 - RISK MANAGEMENT
Converte uma expressão para um tipo Date cDate(exp)

Exemplo:

Dim valorNumerico As Double

valorNumerico = cDbl(“4,56”)

STRINGS
Variáveis do tipo String são muito usadas em programas e muitas vezes têm
que ser manipuladas, para que possamos chegar ao resultado desejado.
Existem muitas funções no VBA que permitem esta manipulação.

As principais funções de manipulação são:

Instr

A variável String pode ser considerada um Array de Caracteres. Cada


caracter da String é uma posição no Array. Podemos localizar um ou mais
caracteres utilizando a função InStr().

Sintaxe:

[posicao]=InStr([posicaoInicial],[varPesquisada],[caracterPesquisa],[tipoPesqu
isa])

onde:

posicaoInicial: Posição de início da pesquisa.


varPesquisada: String a ser pesquisada.

27 - RISK MANAGEMENT
caracterPesquisa: Caracter (ou String) a ser encontrado.
tipoPesquisa: Tipo de pesquisa (para comparação de texto, usa-se
vbTextCompare).

Exemplo:

strSeparador = “ – ”
strTelEmpresa = “55555555 – Mellon Brascan”
intPosicao = InStr(1, strTelEmpresa, strSeparador, vbTextCompare)
MsgBox(“Polsição do Separador: ” & intPosicao)

Mid

A função Mid retorna uma parte da String delimitada pelos parâmetros de


entrada [posicaoInicial], [tamanhoExtracao].

Sintaxe:

[extracao] = Mid([variavel], [posicaoInicial], [tamanhoExtracao])

Onde:
[variavel] = String.
[posicaoInicial] = posição do primeiro caracter que deve ser extraído de
[variavel].
[tamanhoExtracao] = quantidade de caracteres que devem ser extraídos.

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 início e final de uma variável String,


utilizando a função trim().

Sintaxe:

[varSemEspaco] = Trim([varComEspaco])

Exemplo:

strTelEmpresa = “55555555 – Mellon Brascan”


strTelReal = Trim(Mid(strTelEmpresa, 1, 9))
Msgbox(“Telefone real da empresa: ” & strTelReal)

MACROS
Macros são seqüências de comandos e funções definidos usando a linguagem
de programação 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 Criação de uma M acro no Editor do Excel

Clicando na opção de menu Macros, uma nova janela será aberta. O usuário
poderá nomear a Macro e apertar o botão Criar, que abrirá o editor de código
Visual Basic e permitirá a edição da Macro criada.

30 - RISK MANAGEMENT
Figura 2 - O editor de Visual Basic

Geração de Macros pelo Excel


O Excel permite que o usuário 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 ações que o usuário fizer na planilha serão convertidas em
comandos Visual Basic. Para finalizar a gravação da nova Macro, deve-se

31 - RISK MANAGEMENT
acessar o menu Ferramentas > Macro > Parar Gravação. A Macro gerada
realizará exatamente todos os comandos feitos pelo usuário.

Como executar uma Macro na abertura do arquivo


É possível 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 execução
de macros. Os objetos de desenho são acessados a partir da barra de
ferramentas Desenho.

Para associar um objeto desenho produzido a uma macro, deve-se clicar com
o botão direito do mouse a escolher a opção 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 código de um programa e descobrir
possíveis falhas, é executar os comandos passo a passo, ou seja, um de cada
vez. O editor de código Visual Basic permite a execução passo a passo, a
partir do menu Depurar.

A opção de menu Depuração Total incializa a execução do programa. É


possível, desta forma, visualizar exatamente o que está acontecendo. Para
executar uma nova instrução, a opção de menu Depuração Total deve ser
acionada novamente.

33 - RISK MANAGEMENT
Pontos de parada em uma Macro
Muitas vezes, os programas são muito extensos e não é possível realizar uma
depuração passo a passo em todo código. Neste caso, deve-se usar pontos de
parada.

O programa que contém um ponto de parada, executa o código passo a passo


a partir do comando que contém a marca para parar. Os próximos comandos
podem ser executados um de cada vez, facilitando a depuração. Para inserir
ou retirar um ponto de parada em um comando, utiliza-se a opção
Ativar/Desativar ponto de interrupção no menu Depurar.

Figura 4 - Exemplo de execução de um programa com ponto de parada

34 - RISK MANAGEMENT
Visualização de valores de variáveis em tempo de execução
Na figura 4, é possível visualizar o valor de sigma, porque o cursor está em
cima da variável. No entanto, é possível visualizar o valor de mais de uma
variável ao mesmo tempo, utilizando a opção de menu Adicionar inspeção
de variáveis a partir do menu Depurar. Quando o programa for depurado,
será possível a visualização do valor das variáveis em uma janela separada.

OS P RINCIPAIS OBJETOS DO EXCEL


O excel permite o acesso a qualquer funcionalidade em um programa VBA,
através dos métodos e propriedades dos seus objetos. Estes estão
distribuídos 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 contém a
maioria das opções de configurações e definições do aplicativo como um
todo. Muitas propriedades e métodos 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. É possível acessar um objeto Workbook através da
coleção Workbooks (objeto Application), que contém todas as pastas de
trabalho abertas.

As propriedades ActiveWorkbook e ThisWorkbook também 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 código 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 coleção 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 célula ou um intervalo de células. Este
intervalo pode ser contíguo ou não, pode representar uma ou mais linhas,
uma ou mais colunas.

38 - RISK MANAGEMENT
Muitas das funcionalidades da linguagem VBA são 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 célula (assim como o objeto Range).
Para isso, é necessário informar a linha e a coluna da célula desejada.

Exemplo:

Worksheets("Dados").Cells(1, 3).Value = “Índices das Empresas”

Collection
O objeto Collection é um conjunto ordenado de itens, não necessariamente
do mesmo tipo, que se pode fazer referência através de uma chave
(identificador) ou posição.

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 gráfico em uma determinada pasta de
trabalho. Um gráfico pode estar incorporado em um ChartObject ou uma
folha de gráfico separada.

O objeto Charts representa a coleção 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 MÉTODOS
Definições
As propriedades dos objetos são responsáveis por armazenar determinados
atributos. Elas são as caracacterísticas de um Objeto.

Métodos são serviços disponibilizados pelos objetos e são responsáveis por


realizar tarefas como, por exemplo, a mudança 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 não houver janelas abertas.

θ ActiveSheet: Retorna o objeto referente a planilha ativa. Se nenhuma


planilha estiver ativa, a propriedade retorna Nothing.

θ ActiveCell: Retorna a célula ativa da planilha ativa. Se nenhuma célula


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 células da planilha representada pelo objeto


Worksheet. É possível referenciar a uma única célula, especificando o
índice da linha e da coluna da célula.

Exemplo: whsDados.Cells(1,1).Value

θ Name: Corresponde ao nome da planilha.

Chart

θ ChartTitle: Retorna um objeto ChartTitle representando o título do


gráfico especificado. Somente leitura.

θ HasLegend: Indica se o gráfico contém uma Legenda.

Exemplo: chaGrafico.HasLegend = true

θ Visible: Indica se o objeto está visível.

Exemplo: chaGrafico.Visible = true


42 - RISK MANAGEMENT
Principais métodos dos principais objetos
Worksheet

θ Activate: Ativa o objeto Worksheet.

Exemplo: whsDados.Activate

Collection

θ Add: Adiciona um item à coleção.

Exemplo: colCurso.Add(“VBA”, “Curso de VBA”)

θ Remove: Remove um item da coleção.

Exemplo: colCurso.Remove(“VBA”)

Range

θ Sort: Ordena as células definidas pelo objeto Range.

Exemplo:

rngMyRange.Sort Key1:=Range("A1"), _

Order1:=xlAscending, Header:=xlNoRemove(“VBA”)

T RATAMENTO DE ERROS
Os erros em tempo de execução dos programas devem ser tratados com
muito cuidado, de modo a oferecer o máximo de informação, seja para o
usuário ou para o programador.

Como tratar um erro no programa


O Excel permite o tratamento de erros através 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 função


irá continuar a execução da linha ou rótulo 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 não 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 instrução logo após à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 não será executado
End Sub

46 - RISK MANAGEMENT

Você também pode gostar