Você está na página 1de 26

Visual Basic Application para Excel

Prof. Luiz Bianchi


Universidade Regional de Blumenau

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

Matriz fixa ...................................................................................................................20


Matriz dinmica ...........................................................................................................20
Diagrama de blocos .........................................................................................................22
Especificao do problema ..........................................................................................22
Fluxograma v.1 ............................................................................................................23
CdigoVBA v.1 ...........................................................................................................24
Fluxograma v.2 ............................................................................................................25
CdigoVBA v.2 ...........................................................................................................26
Bibliografia ..................................................................................................................26

Visual Basic Application

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:

Prof. Luiz Bianchi

Pag. 3 de 26

Visual Basic Application

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.

Prof. Luiz Bianchi

Pag. 4 de 26

Visual Basic Application

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:

Dim area, valor


Static acumula
Private inteiro

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

Visual Basic Application

Exemplos:

Const pi = 3.1416
Const Pi2 = Pi * 2

Pode ser especificado o escopo de uma constante, como segue:


Private Const Pi = 3.14159

Fica disponvel a todos os procedimentos dentro de


um dado mdulo. Deve ser declarada a nvel de mdulo.
Public Const max = 1024

Permanece disponvel a todos os mdulos. Deve ser

declarada a nvel de mdulo.


Const idade = 29

Prof. Luiz Bianchi

Disponvel apenas dentro do procedimento onde foi declarada.

Pag. 6 de 26

Visual Basic Application

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:

Dim contador As Integer


Private tamMemoria As Long

Uma varivel que conter nmeros fracionrios, pode ser declarada com o tipo de dado
Single, Double ou Currency.
Exemplos:

Public lado1 As Single


Private rea As Double
Dim custoProd As Currency

String
Uma varivel que conter um conjunto de caracteres alfanumricos pode ser declarada com o
tipo de dados String.
Exemplos:

Dim descrProd As String


Dim nomeFunc As String

Boolean
Uma varivel que contm valor lgico (verdadeiro ou falso) pode ser declarada com o tipo de
dados Boolean. O valor padro False.
Exemplo:

Dim limExcedido As Boolean

Prof. Luiz Bianchi

Pag. 7 de 26

Visual Basic Application


Date
Uma varivel que contm valores de data e hora deve ser declarada com o tipo de dados Date.
Exemplo:

data As Date

Atribuio de data e hora em literais Date:


data = #10/2/2001 11:20 AM#

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:

Dim plan1 As object


Set plan1 = Worksheets(1)

Variant
Uma varivel Variant permite o armazenamento de qualquer tipo de dado.
Exemplo:

Dim codMarca

'Variant por padro

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

atribudo o valor 5 varivel de nome x.

Caixa de entrada funo InputBox


A funo InputBox apresenta uma caixa de dilogo para que o usurio possa introduzir o
dado de entrada.
Ela exibe um aviso em uma caixa de dilogo, aguarda at que o usurio insira texto ou clique
em um boto e retorna o contedo da caixa de texto.

Prof. Luiz Bianchi

Pag. 8 de 26

Visual Basic Application


Sintaxe:
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
onde,
prompt
title
default
xpos e ypos
helpfile e context

argumento obrigatrio e representa a mensagem que ser exibida na


caixa de dilogo;
opcional; texto a ser exibido na barra de ttulo da caixa de dilogo;
opcional; dado padro de entrada a ser exibido na caixa de texto;
opcionais; especificam as coordenadas para posicionamento da
caixa de dilogo na tela;
opcionais; identifica o arquivo de ajuda do usurio e o nmero de
contexto atribudo ao tpico da ajuda.

Observao: Para omitir alguns argumentos posicionais, deve-se incluir o delimitador de


vrgula correspondente.
Exemplo: nome = InputBox("Qual o seu nome?", "Entrada de nomes")
Essa instruo ao ser executada, surge a seguinte caixa de dilogo na tela:
Neste exemplo, o nome informado
pelo usurio na caixa de dilogo
atribuido a varivel nome.

Caixa de sada funo MsgBox


Mostra uma caixa de dilogo contendo o boto OK e o valor do dado de sada.
Sintaxe:
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
onde,
prompt

argumento obrigatrio; mensagem que ser exibida na caixa de


dilogo;
buttons
opcional; especifica o tipo de boto a ser exibido na caixa de dilogo;
title
opcional; texto a ser exibido na barra de ttulo da caixa de dilogo;
helpfile e context opcionais; identifica o arquivo de ajuda do usurio e o nmero de
contexto atribudo ao tpico da ajuda.
Observao: Para omitir alguns argumentos posicionais, deve-se incluir o delimitador de
vrgula correspondente.

Prof. Luiz Bianchi

Pag. 9 de 26

Visual Basic Application


Exemplo:

MsgBox "Seu nome " & nome, , "Caixa de nomes"

Nome a varivel que contm o dado ou o nome da pessoa a


ser exibido na caixa de sada juntamente com o primeiro
texto digitado entre aspas. O segundo texto refere-se ao
ttulo da caixa de dilogo. Ao lado, v-se a figura da caixa
de dilogo de sada.

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:

Prof. Luiz Bianchi

Pag. 10 de 26

Visual Basic Application

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:

Prof. Luiz Bianchi

Pag. 11 de 26

Visual Basic Application

Operador Significado
and
e
or
ou
not
no
xor
excluso
imp
implicao
eqv
equivalncia

Descrio
conjuno
disjuno
negao
disjuno exclusiva
condicional
bicondicional

As tabelas-verdade, a seguir, expressam melhor essas operaes lgicas:


&& conjuno)
0e0=0
0e1=0
1e0=0
1e1=1

| | (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

' Inicializa as variveis.


' Retorna True.
' Retorna False.
' Retorna 8 (comparao bit a bit).

Exemplo com operador Or para executar a disjuno lgica em duas expresses:


Dim
A =
R =
R =
R =

A, B, C, R
10: B = 8: C = 6:
A > B Or B > C
B > A Or B > C
A Or B

' Inicializa as variveis.


' Retorna True.
' Retorna True.
' Retorna 10 (comparao bit a bit).

Precedncia dos operadores


Uma expresso avaliada e resolvida em uma ordem predeterminada chamada precedncia de
operadores.
Os operadores de vrias categorias na mesma expresso so avaliados na seguinte ordem: 1 o
os operadores aritmticos, 2o os operadores relacionais e, por ltimo os operadores lgicos.
Os operadores relacionais so avaliados na ordem em que aparecem na expresso. Os
operadores aritmticos e lgicos obedecem a seguinte ordem de precedncia, da esquerda para
a direita:
Operadores aritmticos:
Operadores lgicos:

Prof. Luiz Bianchi

^
Not

- (unrio)
And

Or

*e/
Xor

Mod

Eqv

+e-

Imp

Pag. 12 de 26

Visual Basic Application

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.

Estruturas de seleo ou de deciso


As instrues condicionais avaliam se uma condio Verdadeira ou Falsa, e em seguida
especificam uma ou mais instrues a serem executadas, dependendo do resultado.
If ...Then...Else: Desvia quando uma condio True ou False.
Select Case:

Seleciona um desvio de um conjunto de condies.

Seleo simples
(If ... Then)

testa uma condio nica e executa uma instruo ou um bloco de instrues.

Exemplos: a) If valor < 0 then Valor = 0


b) If valor > 5 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

Prof. Luiz Bianchi

Pag. 13 de 26

Visual Basic Application

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).

Seleo de mltipla escolha


(Select Case) testa uma condio nica 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: ")
Select Case cargo
Case 1: bonus = salario * 0.15
Case 2: bonus = salario * 0.1
Case 3: bonus = salario * 0.08
Case 4, 5
'Pode conter vrios valores
bonus = salario * 0.05
Case 6 To 8
'Pode ser um intervalo de valores
bonus = salario * 0.01
Case Is < 12
'Pode ser comparado a outros valores
bonus = salario * 0.005
Case Else: bonus = 0
End Select
MsgBox ("Cargo: " & cargo & " Bonus: " & bonus)
End Sub

Prof. Luiz Bianchi

Pag. 14 de 26

Visual Basic Application

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:

Faz um loop enquanto ou at que uma condio seja True.


Utiliza um contador para executar instrues um determinado nmero
de vezes.
For Each...Next:
Repete um grupo de instrues para cada objeto em uma
coleo.

Teste no incio
Do While ... Loop
condio for True.
Sintaxe:

testa uma condio no incio do loop e executa o loop enquanto a

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 ... Loop


condio for False.
Sintaxe:

testa uma condio no incio do loop e executa o loop enquanto a

Do Until condio
Instrues
Loop

Exemplo:
Prof. Luiz Bianchi

Pag. 15 de 26

Visual Basic Application

'Conta o nmero de vezes que o usurio executa este procedimento.


Sub conta()
Dim soma As Integer
soma = 0
resp = vbYesNo
Do Until resp = vbNo
soma = soma + 1
resp = MsgBox ("Deseja continuar?", vbYesNo)
Loop
MsgBox "Total = " & soma
End Sub

Teste no final
Do ... Loop While
condio for True.

Sintaxe:

testa uma condio no final do loop e continua a execuo enquanto a

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 ... Loop Until


condio for False.
Sintaxe:

testa uma condio no final do loop e continua a execuo enquanto a

Do
Instrues
Loop Until condio

Prof. Luiz Bianchi

Pag. 16 de 26

Visual Basic Application

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

Repetio com varivel de controle


For ... Next executa as instrues do loop enquanto a varivel contadora no atingir o valor
especificado.
Exemplos:
'Emite sinais sonoros.
Sub nBeeps()
Dim numBeeps As Long, i As Long
numBeeps = InputBox("Quantos beeps?")
For i = 1 To numBeeps
Beep
Next i
End Sub
'Efetua a soma dos nmeros pares at 10.
Sub soma()
Dim total
For j = 2
total
Next j
MsgBox "O
End Sub

As Integer, j As Integer
To 10 Step 2
= total + j
total " & total

Repetio com objetos de coleo


For Each... Next

executa as instrues do loop para cada objeto de uma coleo.

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

Prof. Luiz Bianchi

Pag. 17 de 26

Visual Basic Application


If c.Value < 4 Then
c.Value = 100
End If
Next c
End Sub

Saindo de loops e procedimentos


As intrues Exit permitem abandonar uma estrutura de controle. Apesar dessas instrues
serem convenientes, deve-se restringir seu uso uma vez que o excesso de sua utilizao pode
dificultar a leitura e a depurao do cdigo.
Para sair diretamente de uma estrutura loop For, utiliza-se a instruo Exit For e para sair
diretamente de um loop Do usa-se a instruo Exit Do.
As instrues Exit Sub e Exit Function podem ser usadas para abandonar um procedimento.

Prof. Luiz Bianchi

Pag. 18 de 26

Visual Basic Application

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:

1. Dim matNum (20) As Integer


2. Dim soma (1 To 15) As Integer
Dim valor (100 To 120) As String
3.

No primeiro exemplo acima o ndice da matriz vai de 0 a 20 contm 21 elementos, (sem a


especificao da opo Option Base 1 na seo de declarao do mdulo).
No segundo e terceiro exemplos os ndices variam de 1 a 15 e de 100 a 120, respectivamente.
O tamanho da matriz determinado pelo nmero das suas dimenses e pelos limites
superiores e inferiores dos ndices de cada dimenso.

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"

A instruo seguinte recupera e exibe o contedo do sexto elemento dessa matriz:


MsgBox diaSemana(5)

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

Prof. Luiz Bianchi

Pag. 19 de 26

Visual Basic Application

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

Utilize instrues aninhadas For...Next para processar as matrizes multidimensionais.


O procedimento, a seguir, preenche cada elemento da matriz bidimensional com o valor
baseado na sua localizao dentro da matriz:
Sub MatrizMulti()
Dim i As Integer, j As Integer
Dim matriz(1 To 5, 1 To 10) As Single
' Preenche a matriz com valores e os imprime.
For i = 1 To 5
For j = 1 To 10
matriz(i, j) = i * j
Debug.Print matriz(i, j)
Next j
Next i
End Sub

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

O primeiro argumento representa as linhas; o segundo argumento representa as colunas.

Matriz dinmica
Declara-se uma matriz dinmica deixando vazios os parnteses, como mostra o exemplo a
seguir:
Dim num( ) As integer

Posteriormente, no procedimento, pode ser especificado o nmero de elementos atravs da


instruo ReDim.
Segue um exemplo de declarao e redimensionamento de uma matriz dinmica:

Prof. Luiz Bianchi

Pag. 20 de 26

Visual Basic Application


Sub redimatriz()
Dim num() As Integer ' declara uma matriz dinmica
ReDim num(5)
' faz a alocao de cinco elementos
For i = 1 To 5
' faz o loop 5 vezes
num(i) = i
' inicializa a matriz
Next i
'A prxima instruo redimensiona a matriz e apaga os elementos.
ReDim num(10)
' redimensiona para 10
For i = 1 To 10
' faz o loop 10 vezes
num(i) = i
' inicializa a matriz
Next i
'A instruo a seguir redimensiona a matriz sem apagar os elementos.
ReDim Preserve num(15) ' redimensiona para 15
End Sub

Prof. Luiz Bianchi

Pag. 21 de 26

Visual Basic Application

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.

Prof. Luiz Bianchi

Pag. 22 de 26

Visual Basic Application

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

Prof. Luiz Bianchi

Pag. 23 de 26

Visual Basic Application

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

A seguir apresentado uma nova verso do procedimento, considerando os valores de entrada


armazenados na primeira linha a partir da clula A1 da planilha Plan1, como mostrado na
figura que segue. O resultado ser exibido nas cluas A3 e A4 acompanhado das respectivas
descries colocadas nas clulas B3 e B4.
Valores armazenados em Plan1:

Prof. Luiz Bianchi

Pag. 24 de 26

Visual Basic Application

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

Prof. Luiz Bianchi

Pag. 25 de 26

Visual Basic Application

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/

Prof. Luiz Bianchi

Pag. 26 de 26

Você também pode gostar