Escolar Documentos
Profissional Documentos
Cultura Documentos
PARA EXCEL
MARCOS DE BARROS
OUTUBRO DE 2002
1 - RISK
MANAGEMENT
ÍNDICE
INTRODUÇÃ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
FLUXOS DE CONTROLE 12
Expressões condicionais 13
Loops 16
FUNÇÕES E PROCEDIMENTOS 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
FUNÇÕES MATEMÁTICAS 24
FUNÇÕES DIVERSAS 25
FUNÇÕ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 PRINCIPAIS OBJETOS DO EXCEL 35
Application 36
Workbook 37
Worksheet 37
Range 38
Cells 39
Collection 39
Chart 40
PROPRIEDADES E MÉTODOS 41
Definições 41
Principais propriedades dos principais objetos 42
Principais métodos dos principais objetos 43
TRATAMENTO DE ERROS 43
Como tratar um erro no programa 43
ÍNDICE DE FIGURAS
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.
Exemplo:
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:
Aritméticos
Atribuição
Apenas um operador faz parte desta categoria. Este operador é utilizado para
atribuir valores a variáveis.
Comparação
Lógicos
Arrays
Variável que contém uma lista de valores do mesmo tipo.
Exemplo:
Arrays Multidimensionais
Exemplo:
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
Distribuidores” Redim arrEmpresas(3)
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
FLUXOS 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 é
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:
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
For
Sintaxe:
Exemplo:
Dim arrInteiros(50) As
Integer Dim i As Integer
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
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)
intContador = intContador + 1
Loop
FUNÇÕES E PROCEDIMENTOS
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
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:
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
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.
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
MsgBox(‘Valor de varGlobal: ’ & VarGlobal)
varGlobal = VarGlobal + 5
End Sub
FUNÇÕ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.
FUNÇÕ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
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)
FUNÇÕ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)
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:
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:
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.
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.
Figura 2 - O editor de Visual Basic
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.
Figura 3 - Como associar uma Macro a um objeto Desenho
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:
Application.ActiveWorkbook.Save
ActiveWorkbook.Save
Workbook
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.
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
Figura 7 - Diagrama de Objetos do Microsoft Excel a partir do Objeto Chart
PROPRIEDADES 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.
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.
Exemplo:
Sub calculaPreco()
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
Exemplo:
Sub calculaPreco()
End Sub
On Error GoTo 0
Exemplo:
Sub calculaPreco()
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