Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumrio
Introduo ..........................................................................................................................3
Conceitos ...........................................................................................................................3
Objetos ...........................................................................................................................3
Propriedades e mtodos .................................................................................................3
Procedimento .................................................................................................................3
Mdulo...........................................................................................................................4
Fundamentos ......................................................................................................................5
Declarao de variveis .................................................................................................5
Constantes......................................................................................................................5
Tipos de dados ...............................................................................................................7
Operador de atribuio ..................................................................................................8
Caixa de entrada funo InputBox .............................................................................8
Caixa de sada funo MsgBox ..................................................................................9
Comentrios .................................................................................................................10
Operadores .......................................................................................................................11
Operadores aritmticos ................................................................................................11
Operadores relacionais ................................................................................................11
Operadores de concatenao .......................................................................................11
Operadores lgicos ......................................................................................................11
Precedncia dos operadores .........................................................................................12
Estruturas de controle ......................................................................................................13
Estruturas de seleo ou de deciso .............................................................................13
Seleo simples........................................................................................................13
Seleo composta ....................................................................................................13
Seleo encadeada ...................................................................................................14
Seleo de mltipla escolha .....................................................................................14
Estruturas de repetio.................................................................................................15
Teste no incio .........................................................................................................15
Teste no final ...........................................................................................................16
Repetio com varivel de controle.........................................................................17
Repetio com objetos de coleo ...........................................................................17
Saindo de loops e procedimentos ............................................................................18
Matrizes ...........................................................................................................................19
Matriz unidimensional .................................................................................................19
Declarao de matrizes ............................................................................................19
Atribuio ................................................................................................................19
Matriz multidimensional..............................................................................................20
Introduo
A verso de Visual Basic para Aplicativos um ambiente completo de desenvolvimento,
consistente com a verso de plataforma nica do Visual Basic e compartilhada por todos os
aplicativos do Microsoft Office.
O Visual Basic interpreta um conjunto especial de comandos denominado biblioteca de
objetos do Excel. O Visual Basic que vem com o Excel no a nica linguagem que poder
comunicar-se com a biblioteca de objetos. Qualquer linguagem que oferea suporte
automao poder controlar o Excel.
Excel
Biblioteca de
Objetos
VBA
Conceitos
Alguns componentes essenciais da linguagem VBA para Excel so, a seguir, destacados e
conceituados.
Objetos
Um objeto um tipo especial de varivel que contm dados e cdigos e representa um
elemento especfico no Excel. O Visual Basic suporta um conjunto de objetos que
correspondem diretamente aos elementos do Microsoft Excel.
Por exemplo, o objeto Workbook representa uma pasta de trabalho, o objeto Worksheet
representa uma planilha e o objeto Range representa um intervalo de clulas.
Uma pasta de trabalho, no Microsoft Excel, corresponde a um arquivo que pode conter
diversas planilhas e folhas de grficos ou planilhas de grficos.
Propriedades e mtodos
Para realizar uma tarefa o Visual Basic retorna um objeto que representa o elemento
apropriado do Excel e depois o manipula usando as propriedades e mtodos daquele objeto.
As propriedades so caractersticas ou atributos de um objeto e os mtodos so aes que os
objetos podem executar.
Procedimento
Um procedimento uma unidade de cdigo localizada entre instrues Sub e End Sub ou
entre instrues Function e End Function que realiza uma tarefa.
Um procedimento desempenha uma tarefa especfica. Um procedimento Function pode
retornar valor, ao passo que um procedimento Sub no retorna valor.
Para uma viso geral da estrutura de um procedimento Sub, segue um exemplo com breves
comentrios que explicam cada linha:
Pag. 3 de 26
Sub ObterNome()
' Declara um procedimento Sub que no utiliza argumentos
Dim resposta As String
' Declara uma varivel de seqncia de caracteres de nome resposta
resposta = InputBox(Prompt:="Qual o seu nome?")
' Atribui o valor de retorno da funo InputBox resposta
If resposta = Empty Then
' Instruo condicional If...Then...Else
MsgBox Prompt:="Voc no digitou um nome."
' Chama a funo MsgBox
Else
MsgBox Prompt:="O seu nome " & resposta
' Funo MsgBox concatena com a varivel resposta
End If
' Encerra a instruo If...Then...Else
End Sub
' Encerra o procedimento Sub
Nota: As frases iniciadas por um apstrofo ( ' ) so comentrios admitidos na codificao do
programa VBA, os quais no so analisados pelo compilador.
Mdulo
Um mdulo um conjunto de procedimentos que realiza tarefas especficas.
Por exemplo, procedimentos que executam vrias tarefas contbeis podem ser agrupados em
um mdulo.
Pag. 4 de 26
Fundamentos
Neste tpico sero tratados os comandos bsicos da linguagem VBA para excel.
Declarao de variveis
Uma varivel uma rea na memria, identificada por um nome, onde pode ser armazenado
um valor e alterado a qualquer momento.
A varivel pode ser declarada de modo implcito pelo VBA no momento em que ela for
referenciada numa instruo. No entanto, o programa poder tornar-se mais eficiente se as
variveis forem declaradas de modo explcito pelo usurio. A declarao explcita de todas as
variveis reduz a incidncia de erros de conflitos de nomenclatura e de digitao.
Para impedir que o VBA faa declaraes implcitas, deve-se inserir a instruo Option
explicit em um mdulo antes de todos os procedimentos.
Uma varivel pode ser declarada, usando as seguintes palavras-chave para definir seu escopo:
Dim ou Static
Dim ou Private
Public
(no procedimento)
(no mdulo)
(no mdulo)
Dim O valor da varivel retido apenas enquanto o procedimento no qual ela foi declarada
estiver em execuo.
Static a varivel preserva o valor entre as chamadas ao procedimento.
Private o valor fica disponvel a todos os procedimentos dentro do mdulo onde a varivel
foi declarada.
Public a varivel pode ser acessada pelos procedimentos de vrios mdulos de uma pasta de
trabalho.
Exemplos:
Constantes
Uma varivel declarada por meio do qualificador const significa que seu contedo no poder
ser alterado em todo programa. A constante deve ser inicializada, isto , no momento de sua
declarao dever ser atribudo um valor a ela.
Exemplo:
Const pi = 3.1416
Fontes de constantes:
Constantes predefinidas so fornecidas pelos aplicativos (Excel, Access, Project, etc).
Exemplo de uma constante: xlAbsolute
Constantes simblicas ou definidas pelo usurio so declaradas atravs da instruo
Const.
Prof. Luiz Bianchi
Pag. 5 de 26
Exemplos:
Const pi = 3.1416
Const Pi2 = Pi * 2
Pag. 6 de 26
Tipos de dados
O tipo de uma varivel determina a quantidade de memria que ela ocupar, em bytes, e o
modo de armazenamento. O VBA opera com os seguintes tipos bsicos:
Nome
Integer
Long
Single
Double
Currency
String
Boolean
Date
Object
Variant
Tamanho
2 bytes
4 bytes
4 bytes
8 bytes
8 bytes
1 byte por caractere
2 bytes
8 bytes
4 bytes
16 bytes + 1 byte para
cada caractere
Intervalo
-32768 a 32767
-2.147.483.648 a 2.147.483.467
-3,4 x 1038 a 3,4 x 1038
1,7 x 10308 a 1,7 x 10308
-9223372036854,5808 a 9223372036854,5807
0 a aproximadamente 65.500
Verdadeiro ou Falso
01/01/100 a 31/12/9999
Qualquer referncia a objeto
Vlido para qualquer tipo de dados.
Numrico
Uma varivel que conter nmero inteiro pode ser declarada como Integer ou Long.
Exemplos:
Uma varivel que conter nmeros fracionrios, pode ser declarada com o tipo de dado
Single, Double ou Currency.
Exemplos:
String
Uma varivel que conter um conjunto de caracteres alfanumricos pode ser declarada com o
tipo de dados String.
Exemplos:
Boolean
Uma varivel que contm valor lgico (verdadeiro ou falso) pode ser declarada com o tipo de
dados Boolean. O valor padro False.
Exemplo:
Pag. 7 de 26
data As Date
Pode-se efetuar clculos com valores de data e hora. Para adicionar, por exemplo, 20 dias
soma-se 20 varivel e para subtrair 1 hora, diminui-se 1/24 da varivel.
Object
Uma varivel que contm uma referncia a um objeto do MS Excel pode ser declarada com
tipo de dados Object. Para atribuir um objeto a uma varivel-objeto, deve-se usar a instruo
Set.
Exemplos:
Variant
Uma varivel Variant permite o armazenamento de qualquer tipo de dado.
Exemplo:
Dim codMarca
Operador de atribuio
O operador de atribuio representado por = (sinal de igualdade). Atribui a expresso
direita do sinal de igualdade varivel a sua esquerda.
Exemplo:
x = 5
Pag. 8 de 26
Pag. 9 de 26
Comentrios
Comentrios so utilizados com a finalidade de documentar o programa-fonte. Eles no so
tratados pelo compilador. O smbolo utilizado para representar comentrios inseridos no
programa o apstrofo ().
O exemplo, a seguir, apresenta a declarao de varivel, o operador de atribuio, as funes
de entrada e sada e comentrios:
'O usurio introduz o seu nome e o programa o exibe numa
'caixa de mensagem.
Sub exemplo1()
Dim nome As String
'Declarao de varivel
'Atribui o valor de retorno da funo InputBox varivel nome
nome = InputBox("Qual o seu nome?")
MsgBox "Seu nome " & nome
'Exibe o conteuto da varivel nome
End Sub
Resultado da execuo:
Pag. 10 de 26
Operadores
Aqui sero considerados os operadores aritmticos, relacionais, de concateno, lgicos e a
predncia deles na avalio de uma expresso:
Operadores aritmticos
A tabela, a seguir, apresenta os smbolos e as respectivas operaes e sintaxes dos operadores
aritmticos:
Operador
^
*
/
\
Mod
+
-
Significado
potenciao
multiplicao
diviso
diviso (quociente inteiro)
diviso (retorna o resto)
soma
subtrao
Sintaxe
r = b^e
r = n1*n2
r = n1/n2
r = n1\n2
r = n1 Mod n2
r = n1+n2
r = n1-n2
Operadores relacionais
Operadores relacionais fazem comparaes, isto , verificam a relao de magnitude e
igualdade entre dois valores. So seis os operadores relacionais:
Operador
>
>=
<
<=
=
<>
Significado
maior
maior ou igual
menor
menor ou igual
igual
diferente
Operadores de concatenao
Usados para concatenar e adicionar seqncias de caracteres de duas expresses:
Operador
Significado
&
concatena
+
adiciona
Sintaxe
r = expr1 & expr2
r = expr1 + expr2
Operadores lgicos
Os operadores lgicos do VBA so:
Pag. 11 de 26
Operador Significado
and
e
or
ou
not
no
xor
excluso
imp
implicao
eqv
equivalncia
Descrio
conjuno
disjuno
negao
disjuno exclusiva
condicional
bicondicional
| | (disjuno) ! (negao)
0 ou 0 = 0
no 0 = 1
0 ou 1 = 1
no 1 = 0
1 ou 0 = 1
1 ou 1 = 1
xor(disj.excl.)
0v0=1
1v1=0
1v0=1
1v1=1
imp(cond.)
0 0 =1
01=1
10=0
11=1
eqv(bicond..)
0 <->0 = 1
0 <-> 1 = 0
1 <-> 0 = 0
1 <-> 1 = 1
O exemplo que segue usa o operador And para executar uma conjuno lgica em duas
expresses:
Dim
A =
R =
R =
R =
A, B,
10: B
A > B
B > A
A And
C, R
= 8: C = 6:
And B > C
And B > C
B
A, B, C, R
10: B = 8: C = 6:
A > B Or B > C
B > A Or B > C
A Or B
^
Not
- (unrio)
And
Or
*e/
Xor
Mod
Eqv
+e-
Imp
Pag. 12 de 26
Estruturas de controle
A lgica do procedimento flui atravs das instrues da esquerda para a direita e de cima para
baixo. As instrues de controle, ou seja, as instrues que controlam a tomada de decises e
as iteraes podem alterar a ordem de execuo das instrues.
Seleo simples
(If ... Then)
soma = valor + 30
Valor = 0
End If
O exemplo em a de linha nica no usa a instruo End If como ocorre com o exemplo em
b que contm mais de uma linha de cdigo. Portanto, a sintaxe de linha mltipla If ...
Then ... End If.
Seleo composta
(If Then Else) testa uma condio nica e executa um entre dois blocos de instrues.
Exemplo:
'Verifica e informa
'habilitao.
se
usurio
pode
ou
no
obter
carteira
de
Sub CarteiraHab()
idade = InputBox("Insira a idade", , 15)
If idade < 16 Then
MsgBox "No pode obter carteirade habilitao"
Else
MsgBox "Pode obter carteira de habilitao"
End If
End Sub
Pag. 13 de 26
Seleo encadeada
(If Then ElseIf) testa mais de uma condio e executa um dos vrios blocos de
instrues.
Exemplo:
'Calcula e mostra o valor do bonus com base no cargo
'e salrio do funcionrio.
Sub bonus()
Dim cargo As Integer
Dim salario As Currency, bonus As Currency
salario = InputBox("Informe o salario: ")
cargo = InputBox("Informe o cargo: ")
If cargo = 1 Then
bonus = salario * 0.15
ElseIf cargo = 2 Then
bonus = salario * 0.1
ElseIf cargo = 3 Then
bonus = salario * 0.8
Else
bonus = 0
End If
MsgBox "Cargo: " & cargo & " Bonus: " & bonus
(No entanto, se cada instruo ElseIf testar a mesma expresso com valores diferentes mais
prtico utilizar a estrutura de mltipla escolha).
Pag. 14 de 26
A estrutura Select Case pode ser usada em lugar da If ... Then ... ElseIf apenas quando a
instruo ElseIf avaliar a mesma expresso.
Estruturas de repetio
Permitem a execuo de um grupo ou bloco de instrues repetidamente. As intrues podem
ser repetidas at que uma condio seja falsa ou at que seja verdadeira.
Tambm h loops que repetem instrues um nmero especfico de vezes ou em cada objeto
de uma coleo.
Do...Loop:
For...Next:
Teste no incio
Do While ... Loop
condio for True.
Sintaxe:
Do While condio
Instrues
Loop
Exemplo:
'L valores para o clculo da mdia aritmtica,
'encerrando o processo com a entrada de valor negativo.
Sub Media()
Dim valor As Long, soma As Long, i As Long
valor = 0: soma = 0: i = 0
Do While (valor >= 0)
valor = InputBox("Insira valores para o clculo da mdia." & _
Chr(13) & "Para encerrar digite um valor negativo")
If valor >= 0 Then
soma = soma + valor
i = i + 1
End If
Loop
MsgBox "Mdia = " & (soma / i)
End Sub
Do Until condio
Instrues
Loop
Exemplo:
Prof. Luiz Bianchi
Pag. 15 de 26
Teste no final
Do ... Loop While
condio for True.
Sintaxe:
Do
Instrues
Loop While condio
Exemplo:
'Converte para o sistema binrio um nmero decimal informado pelo
usurio.
Sub Converte()
Dim dec As Integer, bin As String
Dim resto As Integer, sResto As String
dec = InputBox("Informe um num.", , 19)
Do
resto = dec Mod 2
' retorna o resto da diviso
sResto = CStr(resto) ' converte o resto para o tipo string
bin = sResto + bin
' concatena o resto com o contedo de bin
dec = dec \ 2
' retorna o quaciente inteiro da diviso
Loop While dec > 0
MsgBox "Valor em binrio: " & bin
End Sub
Do
Instrues
Loop Until condio
Pag. 16 de 26
Exemplo:
'Calcula e mostra o fatorial de um nmero fornecido pelo usurio.
Sub fatorial()
Dim num As Integer, fat As Integer, i As Integer
num = InputBox("Informe um num.", , 5)
fat = 1: i = 1
Do
fat = fat * i
i = i + 1
Loop While i <= num
MsgBox "Fatorial de " & num & ": " & fat
End Sub
As Integer, j As Integer
To 10 Step 2
= total + j
total " & total
Exemplo:
'Preenche com o valor 100 as clulas A1:D10 de Plan1
'que apresentarem valor menor do que 4.
Sub preenche()
Dim inter As Range, c As Range
Set inter = Worksheets(1).Range("A1:D10")
For Each c In inter
Pag. 17 de 26
Pag. 18 de 26
Matrizes
Matriz uma coleo de variveis que apresenta uma estrutura de dados multidimensional.
Cada elemento da matriz pode ser distinguido de outros elementos por um ou mais ndices
inteiros.
Matriz unidimensional
A matriz unidimensional ou vetor exatamente uma seqncia linear de elementos
armazenados consecutivamente na memria.
Declarao de matrizes
Exemplos:
Atribuio
O exemplo, a seguir, atribui valores a trs elementos da matriz diaSemana:
diaSemana(1) = "Segunda-feira"
diaSemana(2) = "Tera-feira"
diaSemana(3) = "Quarta-feira"
O exemplo a seguir atribui o vocbulo inicial "Bom" para todos os elementos da matriz.
O comando Debug.Print envia a sada para a janela verificao imediata que pode ser
aberta a partir do menu Exibir do programa editor Visual Basic.
Sub semana()
Dim diaSemana(6) As String
Dim i As Integer
For i = 0 To 6
diaSemana(i) = "Bom"
Debug.Print diaSemana(i)
Next i
End Sub
Pag. 19 de 26
Matriz multidimensional
No Visual Basic, pode-se declarar matrizes com at 60 dimenses. Por exemplo, a instruo a
seguir declara uma matriz bidimensional de 5 por 10.
Dim sngMulti (1 To 5, 1 To 10) As Single
Matriz fixa
Na linha de cdigo, a seguir, uma matriz de tamanho fixo declarada como uma matriz
Integer com 11 linhas e 11 colunas:
Dim ExMatriz (10, 10) As Integer
Matriz dinmica
Declara-se uma matriz dinmica deixando vazios os parnteses, como mostra o exemplo a
seguir:
Dim num( ) As integer
Pag. 20 de 26
Pag. 21 de 26
Diagrama de blocos
O primeiro passo ao elaborar-se um programa definir um plano claro e completo daquilo
que o aplicativo dever realizar. A melhor maneira de faze-lo preparar um diagrama de
blocos ou fluxograma representativo da seqncia de etapas a serem executadas pelo
computador.
O diagrama de blocos, tambm chamado de fluxograma, a representao grfica de um
algoritmo e objetiva mostrar a forma ou a seqncia de raciocnio e as operaes envolvidas
para a resoluo de um problema.
Os principais smbolos grficos utilizados em um fluxograma so os seguintes:
Teminal
O ponto de incio, trmino ou interrupo de um programa.
Entrada/Sada
Leitura ou gravao de dados.
Processamento
Um grupo de instrues que executa uma funo de processamento do
programa.
Deciso
Indica a possibilidade de desvios para outros pontos do programa
dependendo do resultado de operaes de comparao.
Conector
Uma entrada ou sada de ou para outra parte do fluxograma.
Especificao do problema
Achar o maior e menor nmero de uma srie de nmeros positivos. O ltimo nmero da srie
contm valor 0 (zero) que indica fim de processo.
Pag. 22 de 26
Fluxograma v.1
incio
declarar
variveis
ler num
maiornum
menornum
num
<> 0
V
num
V
> maior
A3maior
A4menor
B3maior
B4menor
fim
maior
num
F
num
V
< menor
menor
num
Pag. 23 de 26
CdigoVBA v.1
Sub MaiorMenor()
Dim maior As Integer, menor As Integer
Dim num As Integer
num = InputBox("Entre com um num.", "Num.inteiro")
maior = num: menor = num
Do While (num <> 0)
If num > maior Then
maior = num
Else
If num < menor Then
menor = num
End If
End If
num = InputBox("Entre com um num.", "Num.inteiro")
Loop
MsgBox "Maior: " & maior & " Menor: " & menor
End Sub
Pag. 24 de 26
Fluxograma v.2
incio
declarar
variveis
maiorA1
menorA1
i1
C(1,i)
<> 0
A3maior
A4menor
B3maior
B4menor
fim
V
C(1,i) V
> maior
maior
C(1,i)
F
C(1,i) V
< menor
menor
C(1,i)
F
ii+1
Pag. 25 de 26
CdigoVBA v.2
Sub MaiorMenor()
Worksheets("plan1").Activate
Dim maior As Integer, menor As Integer
Dim num As Integer, i As Integer
i=1
maior = Range("A1"): menor = Range("A1")
Do While (Cells(1, i) <> 0)
If (Cells(1, i) > maior) Then
maior = Cells(1, i)
Else
If (Cells(1, i) < menor) Then
menor = Cells(1, i)
End If
End If
i=i+1
Loop
Range("A3") = maior
Range("A4") = menor
Range("B3") = "Maior"
Range("B4") = "Menor"
End Sub
Sada do processamento:
Bibliografia
Programando em Microsoft Excel 7-Visual Basic. Sao Paulo : Makron Books, 1996.
xxvii, 359p.
CAPRON, H. L. Introduo informtica. So Paulo : Pearson Education, 2004.
FORBELLONE, Andr Luiz Villar; EBERSPACHER, Henri Frederico. Lgica de
programao : a construo de algoritmos e estruturas de dados. 2.ed. So Paulo : Makron
Books, 2000. 197p.
UCCI, Waldir; SOUSA, Reginaldo Luiz; KOTANI, Alice Mayumi, et al. . Lgica de
programao : os primeiros passos. 8.ed. Sao Paulo : Erica, 1999. 339p.
Eletrnica
Excel/VBA: http://www.excel-vba-access.com/
Pag. 26 de 26