Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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.
Exemplo:
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.
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:
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
Atribuição
Apenas um operador faz parte desta categoria. Este operador é utilizado para
atribuir valores a variáveis.
Comparação
8 - RISK MANAGEMENT
Concatenação
Lógicos
Arrays
Variável que contém uma lista de valores do mesmo tipo.
Exemplo:
Arrays Multidimensionais
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
Exemplo:
Redim arrEmpresas(1)
Exemplo:
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:
Type Empresa
RazaoSocial as String
CNPJ as String
End Type
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).
Expressões condicionais
If-Then-Else
É a expressão condicional mais utilizada.
Sintaxe:
If ([Condição]) Then
[Comandos 1]
Else
[Comandos 2]
Exemplo:
Exemplo:
Exemplo:
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
Exemplo 1:
Exemplo 2:
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
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
Sintaxe:
Exemplo:
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.
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
Sintaxe:
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 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
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:
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:
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
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
21 - RISK MANAGEMENT
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
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)
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:
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
Exemplo:
Else
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:
"Entrada de Dados")
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:
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.
Instr
Sintaxe:
[posicao]=InStr([posicaoInicial],[varPesquisada],[caracterPesquisa],[tipoPesqu
isa])
onde:
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
Sintaxe:
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:
28 - RISK MANAGEMENT
Trim
Sintaxe:
[varSemEspaco] = Trim([varComEspaco])
Exemplo:
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
31 - RISK MANAGEMENT
acessar o menu Ferramentas > Macro > Parar Gravação. A Macro gerada
realizará exatamente todos os comandos feitos pelo usuário.
Exemplo:
Sub Auto_Open()
MsgBox(“Procedimento executado na abertura do arquivo.”)
End Sub
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
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.
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.
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
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.
Exemplo:
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.
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:
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:
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()
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.
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.
41 - RISK MANAGEMENT
Principais propriedades dos principais objetos
Application
Worksheet
Exemplo: whsDados.Cells(1,1).Value
Chart
Exemplo: whsDados.Activate
Collection
Exemplo: colCurso.Remove(“VBA”)
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.
43 - RISK MANAGEMENT
O comando On Error
Exemplo:
Sub calculaPreco()
End Sub
Exemplo:
Sub calculaPreco()
End Sub
θ On Error GoTo 0
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