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: Fica disponvel a todos os procedimentos dentro de um dado mdulo. Deve ser declarada a nvel de mdulo.
Public Const max = 1024 Private Const Pi = 3.14159

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 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: ^ Not - (unrio) And Or *e/ Xor \ Mod +e-

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 'habilitao. se o 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. testa uma condio no final do loop e continua a execuo enquanto a

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 condio for False. Sintaxe: Do

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

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

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

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 F A3maior A4menor maior num B3maior B4menor

num <> 0

fim

V num V > maior F num V < menor F

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 A3maior A4menor maior C(1,i) B3maior B4menor

C(1,i) <> 0 V

fim

C(1,i) V > maior F C(1,i) V < menor F ii+1

menor C(1,i)

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