Sei sulla pagina 1di 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.

Biblioteca de
Excel 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 (no procedimento)


Dim ou Private (no mdulo)
Public (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 Disponvel apenas dentro do procedimento onde foi declarada.

Prof. Luiz Bianchi 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 Tamanho Intervalo


Integer 2 bytes -32768 a 32767
Long 4 bytes -2.147.483.648 a 2.147.483.467
Single 4 bytes -3,4 x 1038 a 3,4 x 1038
Double 8 bytes 1,7 x 10308 a 1,7 x 10308
Currency 8 bytes -9223372036854,5808 a 9223372036854,5807
String 1 byte por caractere 0 a aproximadamente 65.500
Boolean 2 bytes Verdadeiro ou Falso
Date 8 bytes 01/01/100 a 31/12/9999
Object 4 bytes Qualquer referncia a objeto
Variant 16 bytes + 1 byte para Vlido para qualquer tipo de dados.
cada caractere

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 argumento obrigatrio e representa a mensagem que ser exibida na
caixa de dilogo;
title opcional; texto a ser exibido na barra de ttulo da caixa de dilogo;
default opcional; dado padro de entrada a ser exibido na caixa de texto;
xpos e ypos opcionais; especificam as coordenadas para posicionamento da
caixa de dilogo na tela;
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.

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 Significado Sintaxe


^ potenciao r = b^e
* multiplicao r = n1*n2
/ diviso r = n1/n2
\ diviso (quociente inteiro) r = n1\n2
Mod diviso (retorna o resto) r = n1 Mod n2
+ soma r = n1+n2
- subtrao 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 Sintaxe


& concatena r = expr1 & expr2
+ adiciona r = expr1 + expr2

Operadores lgicos
Os operadores lgicos do VBA so:

Prof. Luiz Bianchi Pag. 11 de 26


Visual Basic Application

Operador Significado Descrio


and e conjuno
or ou disjuno
not no negao
xor excluso disjuno exclusiva
imp implicao condicional
eqv equivalncia bicondicional

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

&& conjuno) | | (disjuno) ! (negao) xor(disj.excl.) imp(cond.) eqv(bicond..)


0e0=0 0 ou 0 = 0 no 0 = 1 0v0=1 0 0 =1 0 <->0 = 1
0e1=0 0 ou 1 = 1 no 1 = 0 1v1=0 01=1 0 <-> 1 = 0
1e0=0 1 ou 0 = 1 1v0=1 10=0 1 <-> 0 = 0
1e1=1 1 ou 1 = 1 1v1=1 11=1 1 <-> 1 = 1

O exemplo que segue usa o operador And para executar uma conjuno lgica em duas
expresses:

Dim A, B, C, R
A = 10: B = 8: C = 6: ' Inicializa as variveis.
R = A > B And B > C ' Retorna True.
R = B > A And B > C ' Retorna False.
R = A And B ' Retorna 8 (comparao bit a bit).

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

Dim A, B, C, R
A = 10: B = 8: C = 6: ' Inicializa as variveis.
R = A > B Or B > C ' Retorna True.
R = B > A Or B > C ' Retorna True.
R = A Or B ' 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: ^ - (unrio) *e/ \ Mod +e-

Operadores lgicos:
Not And Or Xor Eqv Imp

Prof. Luiz Bianchi 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 se o usurio pode ou no obter carteira de


'habilitao.

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: Faz um loop enquanto ou at que uma condio seja True.


For...Next: 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 testa uma condio no incio do loop e executa o loop enquanto a
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 ... Loop testa uma condio no incio do loop e executa o loop enquanto a
condio for False.

Sintaxe: 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 testa uma condio no final do loop e continua a execuo enquanto a
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 ... Loop Until testa uma condio no final do loop e continua a execuo enquanto a
condio for False.

Sintaxe: 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 As Integer, j As Integer
For j = 2 To 10 Step 2
total = total + j
Next j
MsgBox "O total " & total
End Sub

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 F A3maior B3maior


A4menor B4menor fim
<> 0
V
num V maior
> maior num

F
num V menor
< menor num
F

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) F A3maior B3maior


A4menor B4menor fim
<> 0
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

Potrebbero piacerti anche