Buscar

Apostila de macros Excel - Visual basic

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

EXCEL 
 
Visual Basic 
 
 
(TÓPICOS ABORDADOS NAS AULAS DE INFORMÁTICA II) 
 
 
 
 
 
 
Por: 
Cristina Wanzeller / Jorge Loureiro
 
Informática II 
 
 
ÍNDICE 
 
1. INTRODUÇÃO..................................................................................................................................1 
2. PROCEDIMENTOS EM VISUAL BASIC......................................................................................2 
2.1 TIPOS DE PROCEDIMENTOS...............................................................................................................2 
2.2 COMPONENTES DUM PROCEDIMENTO...............................................................................................2 
2.3 LIGAR PROCEDIMENTOS ...................................................................................................................2 
3. COMO É ORGANIZADO UM MÓDULO EM V. BASIC............................................................3 
4. DECLARAÇÕES EM VISUAL BASIC...........................................................................................4 
4.1 TIPOS DE VARIÁVEIS EM V. BASIC ....................................................................................................4 
4.2 TIPO DE INFORMAÇÃO CARACTER - CHARACTER .............................................................................5 
4.3 DECLARAÇÃO DE VARIÁVEIS............................................................................................................5 
4.4 DECLARAÇÃO DE CONSTANTES.........................................................................................................6 
4.5 ÂMBITO DE UMA VARIÁVEL E DE UMA CONSTANTE...........................................................................6 
5. OPERADORES..................................................................................................................................7 
6. FUNÇÕES PREDEFINIDAS............................................................................................................7 
7. EXPRESSÕES....................................................................................................................................8 
8. INSTRUÇÕES BÁSICAS..................................................................................................................9 
8.1 INSTRUÇÕES DE ATRIBUIÇÃO ...........................................................................................................9 
8.2 INSTRUÇÕES DE LEITURA ...............................................................................................................10 
8.3 INSTRUÇÕES DE ESCRITA................................................................................................................11 
9. COMENTÁRIOS .............................................................................................................................12 
10. ESTRUTURAS DE CONTROLO..............................................................................................13 
10.1 SEQUÊNCIA ................................................................................................................................13 
10.2 SELECÇÃO..................................................................................................................................13 
10.2.1 Instrução de Selecção Se ... Então ... Senão... ..................................................................13 
10.2.2 Instrução de Selecção Seleccionar Caso... Fim Seleccionar............................................17 
10.3 REPETIÇÃO.................................................................................................................................19 
10.3.1 Instrução de Repetição Faz ... Ciclo.................................................................................19 
10.3.2 Instrução de Repetição Para ... Seguinte .........................................................................25 
10.3.3 Instrução de Repetição Para Cada ... Seguinte................................................................27 
11. VARIÁVEIS DE TIPO ESTRUTURADO OU ARRAYS........................................................29 
11.1 ALTERAR O TAMANHO DE UM ARRAY EM RUN-TIME (ARRAYS DINÂMICOS) ............................32 
11.2 ARRAYS MULTIDIMENSIONAIS ...................................................................................................33 
12. TIPOS DE DADOS CRIADOS PELO UTILIZADOR.............................................................37 
 
 
 
Informática II 
Visual Basic do Excel 
Informática II – Cap. III - Excel – Visual Basic Pág. 1 
 
 
O objectivo de um programa é o cálculo de valores. O computador manipula 
representações de valores, que não são mais do que configurações de bits ou palavras da 
memória. As representações físicas variam segundo os objectos a representar. É necessário 
a especificação do tipo de valores a manipular. Cada objecto terá um nome, para além de 
um tipo e de um valor. Os nomes dos objectos no programa chamam-se identificadores 
(exceptuando as palavras reservadas à linguagem V. Basic). 
 
Os objectos podem ser: 
 
• Constantes - nome fixo, tipo fixo e valor fixo. Exemplo: 
 
Kb - constante de nome "Kb", do tipo inteiro e valor de 1024 
 
• Variáveis - nome fixo, tipo fixo e valor variável. Exemplo: 
 
Factor - variável de nome factor, do tipo inteiro e de valor variável. A variável 
toma um valor, ou mais, durante a execução do programa. 
 
• Objectos V. Basic ou Excel - Um botão, caixa de diálogo, folha, livro, podendo 
ter propriedades e métodos. Exemplo: 
 
CaixaTexto1 - Objecto que é uma caixa de texto (onde se pode escrever texto), 
cuja propriedade Valor [Value em Inglês], contém a string 
mostrada nessa caixa. 
Para atribuirmos esse valor à variável Nome, faremos: 
Nome = CaixaTexto1.Valor [Nome = CaixaTexto1.Value] 
 
Um programa em linguagem Visual Basic deve ser constituído por três partes 
fundamentais: 
• o cabeçalho, onde é indicado o nome do procedimento, tipo e também as origens 
dos dados de entrada e dos resultados; 
• as declarações de todas as variáveis e constantes que intervêm no programa, e as 
definições dos seus tipos; e 
• o corpo do programa, onde aparecem as instruções que determinam as acções a 
executar ao longo do programa. 
 
Esta estruturação não é de todo obrigatória, já que a declaração de variáveis e constantes 
não é obrigatória e pode também fazer-se em qualquer local do corpo do programa. De 
qualquer forma, recomenda-se a especificação obrigatória das variáveis e constantes e, pelo 
menos as mais relevantes deverão ser definidas no início de cada procedimento ou módulo. 
 
1. Introdução 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 2 
 
 
 
Os procedimentos são blocos de código V.Basic, que é digitado num módulo V.B., sendo 
cada um executado como uma unidade. 
• O código V.B. de um procedimento, indica o que fazer; 
• Uma instrução é uma unidade sintacticamente completa de código, que expressa 
uma acção; Ex.Lucro_Líquido=Lucro_Bruto - Margem 
• Uma função retorna um valor; Ex. Maiúscula [Ucase em Inglês], retorna o texto 
em letras maiúsculas. 
 
 
2.1 Tipos de Procedimentos 
 
Os procedimentos podem ser: 
• Procedimentos Proc [Sub em Inglês] - Não retornam um valor 
Inicia com um Proc e termina com Fim Proc [End Sub em Inglês ] 
• Procedimento Função [Function em Inglês] - Retornam um valor ao 
procedimento chamante 
Inicia com Função e termina com Fim Função [End Function em Inglês ] 
 
2.2 Componentes dum Procedimento 
 
Um procedimento tem: 
• Função... Fim Função [Function ... End Function] 
 ou ou 
Proc ... Fim Proc [Sub ... End Sub] 
• Nome 
• Argumentos (opcionais) 
• Código Visual Basic 
• Valor de retorno que existe na função e não existe no Proc/Sub. 
 
2.3 Ligar Procedimentos 
 
Idealmente um procedimento deve fazer uma coisa e bem. 
Devem criar-se procedimentos curtos, reutilizáveis, fáceis de manter e que possam 
trabalhar em conjunto. 
Procedimentos curtos são mais facilmente desenháveis, de implementar, de corrigir e 
alterar, dado que têm muito menos código. 
Com muitos procedimentos pode também evitar-se a escrita do mesmo código muitas 
vezes, colocando o código a repetir num procedimento e invocá-lo, quando necessário. 
Um procedimento pode chamar outros e este invocar outros e assim sucessivamente. 
2. Procedimentos em Visual Basic 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 3 
 
 
 
Um módulo em V. Basic, contém usualmente, vários procedimentos. A sua ordem é 
irrelevante, a não ser por uma questão de sistematização do problema. 
Há no entanto regras que devem ser obedecidas. 
No início há uma área, denominada Secção de Declarações, onde devem ser declaradas 
constantes e variáveis comuns ao módulo ou ao livro, outras informações e opções de 
funcionamento do V.B. 
 
Exemplo: 
 
Em Português Diferenças em Inglês 
‘Início do Módulo 
‘ESPECIFICAR OPÇÕES DO V. BASIC 
Opção Explícita Option Explicit 
 
‘DECLARAÇÕES DE CONSTANTES E VARIÁVEIS DO MÓDULO 
‘Declaração de constantes 
Público Const DowJones=3500 Public Const DowJones=3500 
‘Declarações de variáveis 
Decl Prec_Orig Dim Prec_Orig 
Decl Num_Vendas, Prec_Venda Dim Num_Vendas, Prec_Venda 
‘Fim de declarações. 
 
‘PROCEDIMENTOS 
Proc Vendas_Stock() 
Inicializar_Folha 
 Busca_Dados_Stock 
 Insere_Valores 
Fim Proc 
Sub Vendas_Stock() 
 
 
 
Fim Sub 
Proc Inicializar_Folha() 
 .... 
 .... 
 .... 
Fim Proc 
 
.... 
.... 
.... 
 
Sub Inicializar_Folha() 
 
 
 
Fim Sub 
 
 
 
 
3. Como é organizado um módulo em V. Basic 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 4 
 
 
 
4.1 Tipos de variáveis em V. Basic 
 
 
Na linguagem V. Basic qualquer tipo de informação (dado) tem associado o seu tipo, 
implícita ou explicitamente, de tal modo que: 
• o tipo da informação determina a gama de valores que esta pode tomar e a gama 
de operações que lhe pode ser aplicada; 
• cada informação tem um tipo, que pode ser redefinido internamente pelo V.B. em 
caso de necessidade; 
• o tipo de informação pode ser deduzido só pela sua forma ou contexto, sem 
qualquer conhecimento do valor que lhe poderá ser atribuído durante a execução 
do programa; 
• cada operador requer operandos e produz resultados de um determinado tipo. 
 
 
 
Na tabela seguinte são mostrados os tipos de variáveis do V. Basic. 
 
Tipo de Dados 
(em Português) 
Tipo de Dados 
(em Inglês) 
Ocupação 
(em bytes) 
Intervalo de valores possíveis 
Booleano Boolean 2 bytes Verdadeiro/True ou Falso/False 
Inteiro Integer 2 bytes -32768 a 32767 
Longo 
(Inteiro Longo) 
Long 4 bytes -2,147,483,648 a 2,147,483,647 
Simples (VF de 
Precisão Simples) 
Single 4 bytes Ver manual 
Duplo (VF de 
Precisão Dupla) 
Double 8 bytes Ver manual 
Moeda Currency 8 bytes Valores com 4 casas décimais e 
até aos biliões 
Data Date 8 bytes 1 de Jan 0100 até 31 Dez 9999 
Cadeia String 1 bytes p/ caracter 0 a 65535 ou mais em alguns 
sistemas 
Variante Variant Como apropriado Texto ou valores até Double 
Objecto Object 4 bytes Qualquer referência a um objecto 
Definida pelo 
Utilizador 
Definida pelo 
Utilizador 
Número requerido 
pelos elementos 
O de cada elemento que constitui 
o tipo de dados definido 
 
 
 
 
4. Declarações em Visual Basic 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 5 
 
 
4.2 Tipo de Informação Caracter - Character 
 
Tem como gama de valores o conjunto de caracteres existentes no computador. Podem-se 
dividir em 4 grupos: 
 
 Letras - A, B, ..., Z e a, b, ..., z; 
 Dígitos - 0, 1, ..., 9; 
 Caracteres especiais -! " # $ % & ' ( ) * + - , . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ etc 
 Caracter branco ou espaço. 
 
O valor do tipo caracter é designado entre aspas: 
 
 “A” “3” “!” 
 
Os caracteres são representados internamente no computador por um conjunto de zeros e 
uns, por exemplo, a tabela ASCII. 
 
 
4.3 Declaração de Variáveis 
 
Como já atrás foi dito, as variáveis em V.B. não têm de ser obrigatoriamente explicitadas, 
embora seja conveniente faze-lo, pois torna o código de execução mais rápida e mais 
explícito. 
Para que o V.B verifique da existência de declaração de variáveis, colocar o statement 
Opção Explícita [Option Explicit] no início de cada módulo (secção de declarações). 
Uma variável é definida por um identificador com um nome fixo, tipo fixo e valor variável. 
 
Exemplos: 
 
Declarações (em Português) Declarações (em Inglês) 
Decl S como Cadeia, Nome como Cadeia 
Decl ENome como Cadeia * 50 
 ‘(ENome - variável de tamanho fixo) 
Decl DataDia como Data 
Decl Botão como Objecto 
Decl Número1 como Inteiro 
Decl SimNao como Booleano 
Decl QualquerCoisa como Variante 
Dim S As String, Nome As String 
Dim ENome As String * 50 
 ‘ (ENome - variável de tamanho 
fixo) 
Dim DataDia As Date 
Dim Botão As Object 
Dim Número1 As Integer 
Dim SimNao As Boolean 
Dim QualquerCoisa As Variant 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 6 
 
4.4 Declaração de constantes 
 
Uma constante é um identificador utilizado em substituição de um determinado valor. 
As constantes tornam-se particularmente úteis quando existe um valor que é utilizado 
várias vezes no programa e/ou quando um valor é difícil de memorizar. Por outro lado, a 
utilização de constantes torna um programa mais claro e facilita a sua manutenção. 
 
Exemplos: 
 
 Const PI=3.14159265 
 Const PI2=PI * 2 
 
 
4.5 Âmbito de uma variável e de uma constante 
 
Caso uma variável seja definida dentro dum procedimento, só o código dentro desse 
procedimento pode aceder ou alterar o valor da variável. 
Por vezes, é necessário que o valor duma variável seja ‘visível’, fora do procedimento (em 
todo o módulo ou em todo o livro), chamando-se a essa disponibilidade de aceder à 
variável o seu “âmbito”. 
Dependendo onde se declarar a variável, o respectivo âmbito pode ser de 3 tipos: 
 
Âmbito Declaração da Variável 
 
Local Decl [Dim] ou Estática [Static] dentro do procedimento 
 
Módulo Decl [Dim], Estática [Static] ou Priv [Private] no início do 
módulo 
 
Publico Público [Public] no início do módulo 
 
 
O âmbito de uma constante também depende do local e da forma como esta é declarada. 
Assim sendo os âmbitos possíveis são: 
 
Âmbito Declaração de Constante 
 
Local Declaração da constante dentro do procedimento 
 
Módulo Priv[Private] Const ... no início do módulo 
 
Publico Público[Public] Const ... no início do módulo 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 7 
 
 
 
•Aritméticos: +, -, /, *, ^, \ (divisão inteira) e Resto [Mod em Inglês] (resto inteiro) 
• Concatenação: & 
• Lógicos: E [And], Eqv, Imp, Não [Not], Ou [Or] e OuX [XoR] 
• Comparação: =, <, <=, >, >= e <> 
• For [Is] (operador equivalência) e Semelhante [Like] (operador semelhança) 
Ex. Texto = Mystery” Semelhante “M*y” [ Texto = Mystery” Like “M*y”], retorna o 
valor lógico Verdadeiro. 
 
 
 
 
As funções aceitam dados e produzem e devolvem resultados. Enumeram-se as seguintes: 
Funções em 
Português 
F. em 
Inglês 
Significado 
ABS(x) - Calcula o módulo de x; 
ARCTG(x) [ATN] - Ângulo, compreendido entre 0 e n, cuja tangente é x. 
COS(x) - Coseno de x, com x em radianos; e 
EXP(x) - Exponencial de x, ex; 
FIXAR(x) [FIX] - Devolve parte inteira de um número; 
INT(x) - Devolve parte inteira de um número; 
LN(x) [LOG] - Logaritmo Natural de x, para x > 0; 
RAIZQ(x) [SQR] - Calcula a raiz quadrada de x. 
SEN(x) [SIN] - Seno de x, com x em radianos; 
ASC(str) - Devolve código associado ao 1º caracter da string str; 
CAR(c) [CHR] - Devolve caracter correspondente ao código c; 
VAL(str) - Devolve números contidos na string str; 
MEIO(str,i,n) [MID] - Devolve n caracteres da string str a partir da posição i;
REMESP(str) [TRIM] - Devolve string str sem espaços no início e no fim; 
NÚMEROCAR(x) [LEN] - Se x for uma string devolve nº de caracteres da string; 
Há centenas de outras que poderão ser consultadas no manual OnLine, em caso de 
necessidade. 
 
Exemplos: 
Português Em Inglês 
Fixar(99.8) = Int(99.8) = 99 Fix(99.8) = Int(99.8) = 99 
Fixar(-99.8) = -99 Int(-99.) = -100 Fix(-99.8) = -99 Int(-99.) = -100 
Car(65) = “A” Car(90)= “Z” Chr(65) = “A” Chr(90)= “Z” 
Car(97)= “a” Car(122)= “z” Chr(97)= “a” Chr(122)= “z” 
Asc(“A”) =65 Asc(“a”)=97 (=) 
5. Operadores 
6. Funções Predefinidas 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 8 
 
Português Em Inglês 
Car(Asc(“a”)-32)=“A” Chr(Asc(“a”)-32)=“A” 
Meio("Excel", 2, 3) = “xce” Mid("Excel", 2, 3) = “xce” 
RemEsp(" Excel v7 ") = “Excel v7” Trim(" Excel v7 ") = “Excel v7” 
NúmeroCar(" Excel v7 ") = 12 Len(" Excel v7 ") = 12 
NúmeroCar(RemEsp(" Excel v7 ")) = 8 Len(Trim(" Excel v7 ")) = 8 
 
 
 
 
 
 
Expressões são regras para calcular valores, consistindo num conjunto de operandos 
ligados por operadores. No V. Basic os operadores têm as seguintes prioridades: 
 
 
 
 
(Inglês) PRIORIDADES
NOT
* / \ MOD AND
+ - OR
= <> > >= < <=
4
3
2
1
OPERADORES
NÃO
* / \ RESTO E
+ - OU
= <> > >= < <=
(Português)
 
 
 
As regras para o cálculo de expressões são as seguintes: 
 
• Se todos os operadores têm igual prioridade, o cálculo é efectuado da esquerda 
para a direita; 
• Se os operadores têm prioridades diferentes, as operações são efectuadas por 
ordem de prioridade, começando na prioridade mais elevada; e 
• As duas primeiras regras podem ser alteradas por utilização de parêntesis, 
efectuando-se neste caso primeiro as operações dentro de parêntesis. 
7. Expressões 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 9 
 
 
8.1 Instruções de Atribuição 
 
Instruções de atribuição são as instruções utilizadas para atribuir um valor particular a uma 
variável, valor esse que é especificado sob a forma de uma expressão. 
 
 IDENTIFICADOR
DIAGRAMA SINTÁTICO
:= EXPRESSÃO 
 
O operador da instrução de atribuição é: 
 
 = - toma o valor de 
 
Exemplos: 
 
 I = 3 a variável I toma o valor 3; 
 J = I a variável J toma o valor da variável I; 
 x = I * J + 5 a variável x toma o valor da expressão; 
 
 
8. Instruções Básicas 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 10 
 
8.2 Instruções de Leitura 
 
Mostram uma caixa de diálogo e esperam que o utilizador escreva texto ou escolha um 
botão, retornando então o conteúdo da caixa de texto. 
 
 
Sintaxe em: 
Português CxEntrada(Prompt [,títulol][,val.defeito][,x pos][,y pos]) 
Inglês InputBox(Prompt [,títulol][,val.defeito][,x pos][,y pos]) 
 
 
Se o utilizador seleccionar o botão OK ou bater Enter, a função CxEntrada/InputBox 
retorna o conteúdo da caixa de texto. Com Cancelar ou Escape, retorna uma string de 
comprimento nulo “”. 
 
 
Exemplo: 
Português Cod= CxEntrada(“Indique o Código do Produto”, “Consulta a Produtos”) 
Inglês Cod= InputBox(“Indique o Código do Produto”, “Consulta a Produtos”) 
 
 
Obs. A função CxEntrada/ InputBox, retorna uma string. Caso o tipo de dados da variável 
para a qual vai ser transferida o valor retornado pela função, seja de outro tipo, deve usar-
se a função conveniente para conversão de dados. 
 
 
Exemplo: 
Português N=Val(CxEntrada(“Numero Inteiro entre 1 e 100”) 
Inglês N=Val(InputBox(“Numero Inteiro entre 1 e 100”) 
 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 11 
 
8.3 Instruções de Escrita 
 
Mostram uma mensagem numa caixa de diálogo. A caixa só é fechada depois de o 
utilizador “clicar” um dos botões disponíveis. O valor retornado pela função, indica o 
botão que foi “clicado” pelo utilizador. 
 
Sintaxe: 
Português CxMsg(prompt [,botões] [título] [fich_Ajuda, contexto]) 
Inglês MsgBox(prompt [,botões] [título] [fich_Ajuda, contexto]) 
 
Obs. Para informações quanto ao item botões e valor retornado, recomenda-se a consulta 
ao help do V. Basic. 
 
Exemplo: 
 
O exemplo que se segue, usa a função CxMsg/MsgBox para mostrar uma mensagem crítica 
de erro, com o botão Sim e Não. 
O botão Não é especificado como botão de resposta por defeito. 
O valor retornado pela CxMsg/ MsgBox, depende do botão seleccionado pelo utilizador. 
Para os propósitos deste exemplo, assume-se que o Help.Hlp é um ficheiro de help que 
contém um tópico de ajuda de contexto com nº 1000. 
 
 
Português Inglês 
Msg=“Quer Continuar?” Msg=“Quer Continuar?” 
Style=vbSimNão+vbCrítico+vbBotãoAssumido2 Style=vbYesNo+vbCritical+vbDefaultButton2 
Title=“Demostração da CxMsg” Title=“Demostração da MsgBox” 
Help=“Help.Hlp” Help=“Help.Hlp” 
Ctxt=1000 Ctxt=1000 
‘Mostra a mensagem ‘Mostra a mensagem 
Resp= CxMsg(Msg, Style, Title, Help, Ctxt) Resp= MsgBox(Msg, Style, Title, Help, Ctxt) 
Se Response=vbSim Então If Response=vbSim Então 
 MyString = “Sim” ‘OBS. 1 MyString = “Sim” ‘OBS. 1 
Senão Else 
 MyString = “Não” ‘OBS. 2 MyString = “Não” ‘OBS. 2 
Fim Se End If 
OBS: 
1- O utilizador clicou o botão Sim 
2- O utilizador clicou o botão Não 
 
As instruções de escrita podem ser formatadas, isto é, para cada saída podemos indicar a 
largura (em caracteres) desse campo e também o número de casas decimais, se o campo for 
do tipo real. Utiliza-se a função Formatar [Format], cuja sintaxe e informação adicional se 
recomenda consulta no Help OnLine. 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 12 
 
 
 
São frases dentro do programa que ajudam à sua compreensão. Os comentários são 
constituídos por uma sequência de caracteres iniciados por plica (‘) e que termina no fim da 
linha. Quer isto dizerque poderemos escrever uma instrução e indicar no final dela o 
respectivo propósito em comentário. Se pretendermos que toda a linha seja um comentário, 
então colocaremos a plica no seu início. 
 
Exemplos: 
 
I = I + 1 ‘Incrementar a variável I 
‘ Procedimento destinado a calcular os números primos até ao inteiro a indicar 
 
Português 
Proc Perímetro() 
‘ calcula o perímetro de uma circunferência, de raio R 
 Const PI = 3.14 
 Decl R como simples, Per como simples 
 
 ‘Inicio do tratamento 
 R=Val(CxEntrada(“Insira o Raio da circunferência”) 
 ‘Cálculo do valor do perímetro, utilizando a fórmula respectiva 
 Per = 2 * PI * R; 
 ‘Impressão do resultado 
 CxMsg(“O perímetro da circ. de raio “ & R & “é igual a “ & Per) 
Fim Proc 
 
Inglês 
Sub Perímetro() 
‘ calcula o perímetro de uma circunferência, de raio R 
 Const PI = 3.14 
 Dim R As Single, Per As Single 
 
 ‘Inicio do tratamento 
 R=Val(InputBox(“Insira o Raio da circunferência”) 
 ‘Cálculo do valor do perímetro, utilizando a fórmula respectiva 
 Per = 2 * PI * R; 
 ‘Impressão do resultado 
 Msgox(“O perímetro da circ. de raio “ & R & “é igual a “ & Per) 
End Sub 
 
 
 
9. Comentários 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 13 
 
 
 
Existem três estruturas de controlo: sequência, repetição e selecção. 
 
10.1 Sequência 
 
As instruções são executadas sequencialmente. 
 
 ... 
 Inst. 1 
 Inst. 2 
 ... 
Na mesma linha podem colocam-se 2 ou mais instruções, desde que separadas com dois 
pontos (:). 
Obs. Apesar duma linha poder ter um maior comprimento do que a largura do ecran 
disponível, sendo efectuado o scroll horizontal automaticamente, pode suceder que 
pretendamos continuar uma instrução na linha seguinte. Para esse propósito, coloca-se no 
fim da linha um underscore (_). 
 
 
10.2 Selecção 
 
As instruções de selecção permitem a execução condicional entre uma ou mais instruções. 
Existem no Visual Basic duas instruções de selecção: 
 
 Se ... Então ... Senão ... [ If ... Then ... Else ...] 
 Seleccionar Caso [Select Case] 
 
 
10.2.1 Instrução de Selecção Se ... Então ... Senão... 
 
 
 
 
DIAGRAMA SINTÁTICO
SE ENTÃOCondição
SENÃO
Instrução
Instrução 
 
10. Estruturas de Controlo 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 14 
 
Expressão ?
Verdadeira
Falsa
ESQUEMA
Instrução 1
Expressão ?
Verdadeira Falsa
Instrução 1 Instrução 2
 
 
 
 
A instrução Se pode ser composta. Existem duas maneiras de ela ser composta: 
 
 
 
- se a instrução depois do Senão[Else] é outra instrução Se [If]. Exemplo: 
 
 
Português 
 Se condição1 Então instrução1 
 SenãoSe condição2 Então instrução2 
 Senão instrução3 
 Fim Se 
 
Inglês 
 If condição1 Then instrução1 
 ElseIf condição2 Then instrução2 
 Else instrução3 
 End If 
 
 
- se a instrução depois do Então [Then] é outra instrução Se [If]. Exemplo: 
 
 
Português 
 Se condição1 Então 
 Se condição2 Então 
 Se condição3 Então instrução1 
 Senão instrução2 
 Fim Se 
 Senão instrução3 
 Fim Se 
 Senão instrução4 
 Fim Se 
 
Inglês 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 15 
 
 
 If condição1 Then 
 If condição2 Then 
 If condição3 then instrução1 
 Else instrução2 
 End If 
 Else instrução3 
 End If 
 Else instrução4 
 End If 
 
 
 
 
Exemplo: 
 
Programa que lê três números inteiros indicados por ordem crescente e diz se poderão ser 
considerados como os lados de um triângulo; em caso afirmativo diz de que tipo de 
triângulo se trata. 
 
 
 
Português 
 
Proc Triângulo() 
 Decl a, b, c Como Inteiro 
 
 a=Val(CxEntrada(“Introduza o Comp. do 1º lado do triângulo”)) 
 b=Val(CxEntrada(“Introduza o Comp. do 2º lado do triângulo”)) 
 c=Val(CxEntrada(“Introduza o Comp. do 3º lado do triângulo”)) 
 Se a + b > c Então 
 Se a = c Então 
 CxMsg(“a=“ & a & “, b=“ & b & “, c=“ & c & “- Triângulo Equilátero” ) 
 SenãoSe ( a = b ) ou ( b = c ) Então 
 CxMsg(“a=“ & a & “, b=“ & b & “, c=“ & c & “ - Triângulo Isósceles” ) 
 Senão 
 CxMsg(“a=“ & a & “, b=“ & b & “, c=“ & c & “ - Triângulo Escaleno” ) 
 Fim Se 
 Senão 
 CxMsg(“Não é um Triângulo!!!”) 
 Fim Se 
Fim Proc 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 16 
 
 
Inglês 
 
 
Sub Triângulo() 
 Dim a, b, c As Integer 
 
 a=Val(InputBox(“Introduza o Comp. do 1º lado do triângulo”)) 
 b=Val(InputBox (“Introduza o Comp. do 2º lado do triângulo”)) 
 c=Val(InputBox (“Introduza o Comp. do 3º lado do triângulo”)) 
 If a + b > c Then 
 If a = c Then 
 Msgbox(“a=“ & a & “, b=“ & b & “, c=“ & c & “- Triângulo Equilátero” ) 
 ElseIf ( a = b ) Or ( b = c ) Then 
 Msgbox (“a=“ & a & “, b=“ & b & “, c=“ & c & “ - Triângulo Isósceles” ) 
 Else 
 Msgbox (“a=“ & a & “, b=“ & b & “, c=“ & c & “ - Triângulo Escaleno” ) 
 End If 
 Else 
 Msgbox (“Não é um Triângulo!!!”) 
 End If 
End Sub 
 
 
 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 17 
 
 
10.2.2 Instrução de Selecção Seleccionar Caso... Fim Seleccionar 
 
 
ESQUEMA
Instrução 2
Expressão ?
Instrução 1 Instrução 3
C1
C2, C3 C5
C7
 
 
Sintaxe Formal: 
 
Em Português Em Inglês 
 
Seleccionar Caso expressão_de_teste 
 Caso lista1expressão 
 Instruções 
 Caso lista2expressão 
 Instruções 
 ...... 
 ...... 
 Caso Senão 
 Instruções 
Fim Seleccionar 
 
Select Case expressão_de_teste 
 Case lista1expressão 
 Instruções 
 Case lista2expressão 
 Instruções 
 ...... 
 ...... 
 Case Else 
 Instruções 
End Select 
 
 
Cada listaexpressão é uma lista de um ou mais valores, se muitos, serão separados por 
vírgulas. Se mais de um Caso é igual a expressão_de_teste, só o bloco de instruções 
associado ao 1º caso é executado. 
O V. Basic executará as instruções do Caso Senão, se nenhum dos listaexpressão satisfizer 
a expressão_de_teste. 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 18 
 
Exemplo: Programa para escrever o último dia de um determinado mês e de um ano 
compreendido entre 1900 e 2000. 
 
Português 
 
Proc ultimoDia() 
 Decl mes, ano Como Inteiro 
 
 mes=Val(CxEntrada(“Introduza o Mês”)) 
 ano=Val(CxEntrada (“Introduza o Ano”)) 
 Seleccionar Caso mes 
 Caso 1, 3, 5, 7, 8, 10, 12 
 CxMsg(mes & “ tem 31 dias!”) 
 Caso 4, 6, 9, 11 
 CxMsg(mes & “ tem 30 dias!”) 
 Caso 2 
 Se (ano Resto 4) = 0 Então 
 CxMsg(mes & “ tem 29 dias!”) 
 Senão 
 CxMsg(mes & “ tem 28 dias!”) 
 Fim Se 
 Fim Seleccionar 
Fim Proc 
 
Inglês 
Sub ultimoDia() 
 Dim mes, ano As Integer 
 
 mes=Val(InputBox(“Introduza o Mês”)) 
 ano=Val(InputBox (“Introduza o Ano”)) 
 Select Case mes 
 Case 1, 3, 5, 7, 8, 10, 12 
 MsgBox(mes & “ tem 31 dias!”) 
 Case 4, 6, 9, 11 
 MsgBox (mes & “ tem 30 dias!”) 
 Case 2 
 If (ano Mod 4) = 0 Then 
 MsgBox(mes & “ tem 29 dias!”) 
 Else 
 MsgBox (mes & “ tem 28 dias!”) 
 End If 
 End Select 
End Sub 
 
 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 19 
 
10.3 Repetição 
 
As instruções de repetição implicam a existência de um ciclo no programa, que vai permitir 
a repetição de uma instrução ou de uma instrução composta, sujeita a uma condição que 
determina o final da instrução de repetição. 
Existem no V. Basic três instruções de repetição: 
 
 Faz ... Ciclo [ Do ... Loop ] 
 Para ... Seguinte [ For ... Next ] 
 Para Cada ... Seguinte [ For Each ... Next ] 
 
 
10.3.1 Instrução de Repetição Faz ... Ciclo 
 
 
 
Expressão ?
Instrução
Verdadeira
Falsa
ESQUEMA
 
 
Há três variantes desta instrução: 
1. Com teste prévio à condição no início do Ciclo, enquanto condição for verdadeira. 
2. Idem à anterior, com teste à condição no final do Ciclo, executando as instruções do 
Ciclo, pelo menos uma vez. 
3. Correr o Ciclo até que condição seja verdadeira. 
 
1. 
Faz Enquanto Condição 
 .... 
 .... 
Ciclo 
Do While Condição 
 .... 
 .... 
Loop 
 
A expressão condição, deverá produzir um valor lógico. É de realçar que a condição é 
verificada antes da execução de qualquer instrução do Ciclo. Assim, essas instruções 
podem nunca ser executadas, desde que a condição do Ciclo seja inicialmente falsa. 
Obs. Caso o Ciclo esteja mal construído, motivando a sua execução infinita, situação que 
deve obviamente ser evitada, pode parar-se a execução com a tecla Esc. 
Exemplos: 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 20 
 
 
A função que se segue, conta as ocorrências de uma string - string_a_Procurar - dentro de 
outra string - stringLonga - , efectuando sucessivos Ciclos enquanto a string_a_Procurar 
seja encontrada. O ciclo pode correr um número qualquer de vezes, podendo também 
nunca ser executado, se inicialmente a condição for falsa. 
 
Português 
 
Função ContaStrings (stringLonga, string_a_Procurar) 
 pos = 1 
 Faz Enquanto PosCadeia(pos,stringLonga,string_a_Procurar) ‘Retorna verd./falso 
 pos= PosCadeia(pos, stringLonga, string_a_Procurar) + 1 
 Contador=Contador + 1 
 Ciclo 
 ContaStrings=Contador 
Fim Função 
 
Inglês 
 
Function ContaStrings (stringLonga, string_a_Procurar) 
 pos = 1 
 Do While Instr(pos, stringLonga, string_a_Procurar) ‘Retorna verdade/falso 
 pos=Instr(pos, stringLonga, string_a_Procurar) + 1 
 Contador=Contador + 1 
 Loop 
 ContaStrings=Contador 
End Function 
 
 
 
Obs: A função PosCadeia [Instr] devolve a posição da primeira ocorrência de uma string 
noutra string. Para obtenção de informação adicional recomenda-se a consulta ao help do 
V. Basic. 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 21 
 
Este outro programa lê dois inteiros positivos e divide o primeiro pelo segundo, usando só 
as operações de soma e subtracção. 
 
Português 
 
Proc divisao1() 
 Decl x, y, quociente, resto Como Inteiro 
 ‘Inicio do tratamento 
 x = Val(CxEntrada(“Insira o Dividendo”)) 
 y = Val(CxEntrada(“Insira o Divisor”)) 
 resto = x : quociente = 0 
 Faz Enquanto resto >= y 
 quociente = quociente + 1; 
 resto = resto - y 
 Ciclo; 
 CxMsg(x & “ dividido por “ & y & “ é “ & quociente & “ ,resto “ & resto) 
Fim Proc 
 
Inglês 
 
Sub divisao1() 
Dim x, y, quociente, resto As Integer 
‘Inicio do tratamento 
 x = Val(InputBox(“Insira o Dividendo”)) 
 y = Val(InputBox(“Insira o Divisor”)) 
 resto = x : quociente = 0 
 Do While resto >= y 
 quociente = quociente + 1; 
 resto = resto - y 
 Loop; 
 MsgBox(x & “ dividido por “ & y & “ é “ & quociente & “ ,resto “ & resto) 
End Sub 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 22 
 
 
2. 
Faz 
 .... 
 .... 
Ciclo Enquanto Condição 
Do 
 .... 
 .... 
Loop While Condição 
 
 
Neste caso, a instrução permite correr as instruções do Ciclo antes e no final de cada Ciclo 
efectuar o teste à condição. Esta variação de procedimento, garante que as instruções 
contidas no Ciclo são executadas pelo menos uma vez. 
 
 
 
 
Expressão ?
Instrução n
VerdadeiraFalsa
ESQUEMA
Instrução 1
Instrução 2
 
 
Exemplos: 
 
Português 
 
Faz 
 ProcDados ‘ Chama o procedim. que processa os dados pelo menos uma vez 
 Resposta=CxMsg(“Pretende processar mais dados?”, vbSimNão) 
Ciclo Enquanto Resposta = vbSim 
 
Inglês 
 
Do 
 ProcDados ‘ Chama o procedim. que processa os dados pelo menos uma vez 
 Resposta=MsgBox(“Pretende processar mais dados?”, vbYesNo) 
Loop While Resposta = vbYes 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 23 
 
O proc. Divisao1, mas partindo do princípio que o primeiro inteiro é maior que o segundo. 
 
Português 
 
Proc divisao2 
 Decl x, y, quociente, resto Como Inteiro 
 
 x = Val(CxEntrada(“Insira o Dividendo”)) 
 y = Val(CxEntrada(“Insira o Divisor”)) 
 resto = x : quociente = 0 
 Faz 
 quociente = quociente + 1 
 resto = resto - y 
 Ciclo Enquanto resto < y 
 CxMsg(x & “ dividido por “ & y & “ é “ & quociente & “ ,resto “ & resto) 
Fim Proc 
 
Inglês 
 
Sub divisao2 
 Dim x, y, quociente, resto As Integer 
 x = Val(InputBox(“Insira o Dividendo”)) 
 y = Val(InputBox(“Insira o Divisor”)) 
 resto = x : quociente = 0 
 Do 
 quociente = quociente + 1 
 resto = resto - y 
 Loop While resto < y 
 MsgBox(x & “ dividido por “ & y & “ é “ & quociente & “ ,resto “ & resto) 
End Sub 
 
 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 24 
 
3. 
Faz AtéQue Condição 
 .... 
 .... 
Ciclo 
Do Until Condição 
 .... 
 .... 
Loop 
 
 
ou 
 
 
Faz 
 .... 
 .... 
Ciclo AtéQue Condição 
Do 
 .... 
 .... 
Loop Until Condição 
 
 
Também com duas variantes, tal como o Ciclo Enquanto, com teste prévio ou no final do 
Ciclo. 
A diferença entre este tipo de Ciclo e o anterior, reside no facto de, neste caso, o Ciclo é 
executado enquanto a condição for falsa em vez de verdadeira. 
 
 
Exemplos: 
 
1. Com teste prévio 
 
Português 
 
Faz AtéQue Resposta = vbNão 
 ProcDados ‘ Chama o procedim. que processa os dados pelo menos uma vez 
 Resposta=CxMsg(“Pretende processar mais dados?”, vbSimNão) 
Ciclo 
 
Inglês 
 
Do Util Resposta = vbNo 
 ProcDados ‘ Chama o procedim. que processa os dados pelo menos uma vez 
 Resposta=MsgBox(“Pretende processar mais dados?”, vbYesNo) 
Loop 
 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 25 
 
2. Com teste no final do Ciclo 
 
Português 
 
Faz 
 ProcDados ‘ Chama o procedim. que processa os dados pelo menos uma vez 
 Resposta=CxMsg(“Pretende processar mais dados?”, vbSimNão) 
Ciclo AtéQue Resposta = vbNão 
 
Inglês 
 
Do 
 ProcDados ‘ Chama o procedim. que processa os dados pelo menos uma vez 
 Resposta=MsgBox(“Pretende processar maisdados?”, vbYesNo) 
Loop Until Resposta = vbNo 
 
 
 
 
 
10.3.2 Instrução de Repetição Para ... Seguinte 
 
Sintaxe: 
 
Português 
 
Para contador = início Até Fim [Inc incremento] 
 instruções 
Seguinte [contador] 
 
Inglês 
 
For contador = início To Fim [Step incremento] 
 instruções 
Next [contador] 
 
 
 
É usada quando o número de repetições não depende do efeito das instruções dentro do 
ciclo. A variável de controlo vai sendo incrementada ou decrementada do valor dado por 
incremento, desde um valor inicial, correspondente a início (literal ou expressão), até a um 
valor final, dado pelo Fim (literal ou expressão). 
Os argumentos contador, início, fim e incremento são todas numéricas. O incremento pode 
ser positivo ou negativo. 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 26 
 
Exemplo: 
 
 
Programa para calcular a soma de vários inteiros positivos. O primeiro valor a entrar é um 
inteiro que dá o número de inteiros cuja soma se pretende calcular. 
 
Português 
 
Proc soma() 
 Decl comp, k, I, soma Como Inteiro 
 
 comp = Val(CxEntrada(“Somar quantos números inteiros?”)) 
 soma = 0; 
 Para k = 1 até comp 
 I = Val(CxEntrada(“Próximo Número a somar”)) 
 soma = soma + 1 
 Seguinte k 
 CxMsg(“ A soma é : “ & soma) 
Fim Proc 
 
Inglês 
 
Sub soma() 
Dim comp, k, I, soma As Integer 
 comp = Val(InputBox(“Somar quantos números inteiros?”)) 
 soma = 0; 
 For k = 1 TO comp 
 I = Val(InputBox(“Próximo Número a somar”)) 
 soma = soma + 1 
 Next k 
 MsgBox(“ A soma é : “ & soma) 
End Sub 
 
 
 
Obs. Quando o V.Basic executa um Ciclo Para ... Seguinte, [For ... Next] segue os 
seguintes passos: 
1. Coloca o contador igual a início 
2. Testa para ver se contador é maior do que o Fim. Se for, o V. Basic sai do Ciclo. 
3. Corre as instruções 
4. Incrementa o contador de 1, ou de incremento, caso tenha sido especificado 
5. Repete os passos 2 a 4. 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 27 
 
10.3.3 Instrução de Repetição Para Cada ... Seguinte 
 
Sintaxe: 
 
Português 
 
Para Cada elemento Em grupo 
 instruções 
Seguinte elemento 
 
Inglês 
 
For Each elemento In groupo 
 Instruções 
Next elemento 
 
 
 
É semelhante ao Ciclo Para Seguinte, mas repete um conjunto de instruções para cada 
elemento de uma colecção de objectos ou num array, em vez de repetir as instruções um 
número de vezes especificado. Isto é de especial ajuda se não se sabe quantos elementos 
estão no grupo. 
É de utilização muito interessante na criação de macros para tratamento de dados em 
folhas. 
 
Exemplo: 
 
Português 
 
Proc IncrementarSelecçãoCorrente() 
 ‘Assigna uma referência de objecto ( a selecção actual) a uma variável 
DefRef Intervalo_a_Incrementar = Selecção 
 ‘C refere-se a uma célula particular durante cada iteração do Ciclo 
 Para Cada C Em Intervalo_a_Incrementar 
 Se ForNumérico(C.Valor) Então 
 C.Valor = C.Valor + 1 
 Fim Se 
 Seguinte C 
Fim Proc 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 28 
 
 
Inglês 
 
Sub IncrementarSelecçãoCorrente() 
 Set Intervalo_a_Incrementar = Selection 
 ‘C refere-se a uma célula particular durante cada ciclo do loop 
 For Each C In Intervalo_a_Incrementar 
 If IsNumeric(C.Value) Then 
 C.Value = C.Value + 1 
 End If 
 Next C 
End Sub 
 
 
 
Obs. Quando o V.Basic executa um Ciclo Para Cada ... Seguinte [For Each ... Next], segue 
os seguintes passos: 
1. Define o elemento nomeando o primeiro elemento no grupo (desde que haja pelo menos 
um elemento). 
2. Corre as instruções 
3. Testa para ver se elemento é o último no grupo. Se for, Visual Basic sai do Ciclo. 
4. Define elemento nomeando o próximo elemento no grupo. 
5. Repete os passos 2 até 4. 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 29 
 
 
 
Problema: 
Supondo que uma empresa tem um grupo de vendedores, em números de 20 a quem são 
pagas comissões nas vendas que ultrapassam 2/3 da média das vendas efectuadas pelo 
grupo. 
Pretende-se um programa que leia o valor das vendas de cada um dos vendedores e 
imprima o número de referência de cada vendedor que alcançou e o valor das vendas por 
ele efectuadas. 
 
Algoritmo Comissões 
 
• lê os valores das rendas de cada vendedor ( Venda1, Venda2, ..., Venda20 ); 
 
• calcular o nível da comissão ( Nível ); 
 
• se Venda1 > Nível então imprime 1 e Venda1 
se Venda2 > Nível então imprime 2 e Venda2 
... 
se Venda20 > Nível então imprime 20 e Venda20 
 
Fim Comissões 
 
A resolução do problema simplifica-se se for considerado em vez de 
 
 Venda1, Venda2, ..., Venda20 
 
uma única variável de tipo estruturado ou Tabela ou Array. 
 
Uma variável de tipo estruturado ou Array é caracterizada por ter mais que uma 
componente; cada componente de uma informação do tipo estruturado é uma variável que 
pode ser do tipo simples ou estruturado. 
Por exemplo, uma tabela (Array em Inglês) é um conjunto ordenado de variáveis todas do 
mesmo tipo. 
 
Para utilizar uma tabela no exemplo anterior, seria como utilizar a noção de índice 
 
 vendai 
 
em que vendai designa o valor das vendas efectuadas pelo vendedor i. 
 
 
 
 
O esquema do programa ficaria: 
11. Variáveis de Tipo estruturado ou Arrays 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 30 
 
 
Algoritmo Comissões 
 
• lê Vendai ( para i de 1 a 20 ); 
 
• calcula o nível da comissão ( Nível); 
 
• para i variando de 1 a 20 : 
 - se Vendai > Nível então imprime ( i, Vendai ); 
 
Fim Comissões 
 
Na linguagem Visual Basic, a declaração duma variável desse tipo é feita do seguinte 
modo: 
 
Português 
Decl Nome_de_Variável (elementos) Como Tipo de dados 
 
Teríamos, no nosso caso: 
 Decl Venda(1 To 20) Como Moeda 
 
Inglês 
 
Dim Nome_de_Variável (elementos) As Tipo de dados 
 
Teríamos, no nosso caso: 
 Dim Venda(1 To 20) As Currency 
 
 
Para acedermos ao conteúdo de um dos elementos do array, bastará indicar o nome da 
variável e o respectivo número do elemento entre parêntisis. 
Exemplo: Venda(10), acederia ao valor de vendas do 11º vendedor. 
Atenção! Por defeito o 1º elemento, caso não seja explicitado na instrução de declaração da 
variável é o Zero (0). 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 31 
 
Versão final do programa 
 
Português 
 
Proc Comissoes() 
 Const Vendedores = 20 
 Decl Venda(1 To 20) Como Moeda 
 Decl Soma, Nível Como Moeda 
 ‘Início do Tratamento 
 Soma = 0 ‘ Inicializa valor do total de vendas a 0 
 Para i = 1 até Vendedores 
 ‘ soma as vendas dos 20 vendedores 
 Venda(i) = Val(CxEntrada(“Insira as vendas do “& i & “º vendedor”)) 
 Soma = Soma + Venda(i) 
 Seguinte 
 Nível = 2/3* Soma / Vendedores ‘ nível de comissão 
 Para i = 1 até Vendedores 
 Se Venda(i) > Nivel Então 
 CxMsg(“Vendedor “ & i & Venda(i) 
 Fim Se 
 Seguinte i 
Fim Proc 
 
Inglês 
 
Sub Comissoes() 
 Const Vendedores = 20 
 Dim Venda(1 To 20) As Currency 
 Dim Soma, NivelAs Currency 
 ‘Início do Tratamento 
 Soma = 0 ‘ Inicializa valor do total de vendas a 0 
 For i = 1 TO Vendedores 
 ‘ soma as vendas dos 20 vendedores 
 Venda(i) = Val(InputBox(“Insira as vendas do “& i & “º vendedor”)) 
 Soma = Soma + Venda(i) 
 Next 
 Nivel = 2/3* Soma / Vendedores ‘ nível de comissão 
 For i = 1 TO Vendedores 
 If Venda(i) > Nivel Then 
 MsgBox(“Vendedor “ & i & Venda(i) 
 End If 
 Next i 
End Sub 
 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 32 
 
11.1 Alterar o Tamanho de Um Array em Run-Time (Arrays Dinâmicos) 
 
Uma Tabela ou Array, pode ter tamanho fixo ou variável, podendo inclusivamente ser 
redimensionada no decorrer do procedimento, utilizando o statement ReDim. 
 
Para que posamos redimensionar um array, faremos: 
Português 
Decl ArrayDinamico() como tipo de dados 
.... 
ReDim ArrayDinamico (X + 1) como tipo de dados 
 
Inglês 
 
Dim ArrayDinamico() como tipo de dados 
.... 
ReDim ArrayDinamico (X + 1) como tipo de dados 
 
 
Trata-se duma facilidade extremamente interessante, quando não conhecemos aquando da 
codificação do programa, de quantos elementos um array irá necessitar. Isso permite evitar 
que criemos arrays desnecessariamente grandes, obrigando a estabelecer tamanhos 
máximos à partida. Obviamente que esta situação permite uma gestão de memória mais 
eficiente. 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 33 
 
11.2 Arrays Multidimensionais 
 
Tabelas com um único índice, que requerem portanto apenas um valor para seleccionar o 
elemento da tabela, são chamados vectores ou tabelas unidimensionais. 
Há no entanto tabelas com mais que um índice, no caso de terem dois índices são 
chamadas matrizes ou tabelas bidimensionais. 
 
 
Tabela Unidimensional ou Vector
1 2 3 4 5 6 7 8
x[1] x[8] 
 
Exemplo: 
 
Português 
 xi ( i = 1, 2, ..., 8 ) 
 Decl X(1 To 8) Como Inteiro 
 X(5)= 3 
Inglês 
 xi ( i = 1, 2, ..., 8 ) 
 Dim X(1 To 8) As Integer 
 X(5)= 3 
 
 
 
Tabela Bidimensional ou Matriz
j=1 j=2 j=3 j=4
i=1
i=2
i=3
A(1,4)
A(3,3) 
 
Exemplo: 
 
Português 
 aij ( i = 1, 2, 3 ; j= 1, 2, 3, 4 ) 
 Decl A (1 To 3, 1 To 4) Como Cadeia 
 A ( 2, 3 ) = “F” 
Inglês 
 aij ( i = 1, 2, 3 ; j= 1, 2, 3, 4 ) 
 Dim A (1 To 3, 1 To 4) As String 
 A ( 2, 3 ) = “F” 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 34 
 
 
Tabela Tridimensional
j=1
j=2
j=3
i=1 i=2 i=3 B(3,3,1)
B(3,3,3)
j
i
k
k=1
k=2
k=3
 
 
 
 
Exemplo: 
 
Português 
 bijk ( i, j, k = 1, 2, 3) 
 Decl B (1 To 3, 1 To 3, 1 To 3) Como Simples 
 B ( 2, 3, 1 ) = 4.5 
Inglês 
 bijk ( i, j, k = 1, 2, 3) 
 Dim B (1 To 3, 1 To 3, 1 To 3) As Single 
 B ( 2, 3, 1 ) = 4.5 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 35 
 
 
Exemplo: Programa para calcular o produto de duas matrizes quadradas, 3x3, A e B sendo 
C a matriz resultante. 
 
Português 
Proc Matrizes () 
 Decl a(1 To 3, 1 To 3), b(1 To 3, 1 To 3) Como Simples 
 Decl i, j, k Como Inteiro 
 Decl soma Como Simples 
 
 ‘Aceitar os elementos da matriz A 
 Para i = 1 até 3 
 Para j = 1 Até 3 
 a(i, j)=Val(CxEntrada(“Valor do elemento “ & I &” , “ & j, “Matriz A”) 
 Seguinte j 
 Seguinte i 
 ‘Aceitar os elementos da matriz B 
 Para i = 1 Até 3 
 Para j = 1 Até 3 
 b(i, j)=Val(CxEntrada(“Valor do elemento “ & I &” , “ & j, “Matriz B”) 
 Seguinte j 
 Seguinte i 
 ‘Cálculo do produto das 2 matrizes 
 Para j = 1 Até 3 
 Para k = 1 Até 3 
 soma = 0 
 Para i = 1 Até 3 
 soma = soma + a( j, i ) * b( i, k ) 
 c( j, k )= soma 
 Seguinte I 
 Seguinte k 
 Seguinte j 
 ‘Mostra matriz resultante 
 Para i= 1 Até 3 
 Para j = 1 Até 3 
 CxMsg(“a(“ & I & “,” & j & “) - “ & c( i, j ) ) 
 Seguinte j 
 Seguinte I 
Fim Proc 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 36 
 
 
Inglês 
Sub Matrizes () 
 Dim a(1 To 3, 1 To 3), b(1 To 3, 1 To 3) As Single 
 Dim i, j, k As Integer 
 Dim soma As Single 
 
 ‘Aceitar os elementos da matriz A 
 For i = 1 To 3 
 For j = 1 To 3 
 a(i, j)=Val(InputBox(“Valor do elemento “ & I &” , “ & j, “Matriz A”) 
 Next j 
 Next i 
 ‘Aceitar os elementos da matriz B 
 For i = 1 To 3 
 For j = 1 To 3 
 b(i, j)=Val(InputBox(“Valor do elemento “ & I &” , “ & j, “Matriz B”) 
 Next j 
 Next i 
 ‘Cálculo do produto das 2 matrizes 
 For j := 1 To 3 
 For k = 1 To 3 
 soma = 0 
 For i = 1 To 3 
 soma = soma + a( j, i ) * b( i, k ) 
 c( j, k )= soma 
 Next I 
 Next k 
 Next j 
 ‘Mostra matriz resultante 
 For i= 1 To 3 
 For j = 1 To 3 
 MsgBox(“a(“ & I & “,” & j & “) - “ & c( i, j ) ) 
 Next j 
 Next I 
End Sub 
 
 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 37 
 
 
 
Podem combinar-se variáveis de tipos diferentes para se criarem tipos de dados próprios. 
Tipos de dados definidos pelo utilizador são úteis, sempre que se pretende criar uma única 
variável que armazene vários pedaços de informação relacionada, o que normalmente toma 
o nome de Registo ou Estruturas. 
Para se criar um tipo de dados definido pelo utilizador, usa-se o statement Tipo [Type]]]], 
que deve ser colocado no cimo de um módulo Visual Basic. Estes tipos de dados são 
sempre públicos. 
 
Exemplo: 
 
Pretende-se criar uma variável que permita registar informação sobre um computador. 
 
Português 
 
‘Declarações 
Tipo InfSistema 
 CPU Como variante 
 Memoria Como Longo 
 PlacaGrafica Como Cadeia 
 Custo Como Moeda 
 Data_de_Compra Como Variante 
Fim Tipo 
 
Num determinado módulo, podem criar-se variáveis locais deste tipo, fazendo: 
 
Decl MeuSistema Como InfSistema, TeuSistema Como InfSistema 
 
Inglês 
 
‘Declarações 
Type InfSistema 
 CPU As variant 
 Memoria As Long 
 PlacaGrafica As String 
 Custo As Currency 
 Data_de_Compra As Variant 
End Type 
 
Num determinado módulo, podem criar-se variáveis locais deste tipo, fazendo: 
 
Dim MeuSistema As InfSistema, TeuSistema As InfSistema 
 
 
12. Tipos de Dados Criados pelo Utilizador 
VISUAL BASIC DO EXCEL 
Informática II – Cap. III - Excel – Visual Basic Pág. 38 
 
 
 
Para assignar e retornar valores dos elementos destas variáveis, indica-se o nome da 
variável de tipo e o nome da variável separadas por ., tal como se acede a propriedades 
dum objecto. 
 
Exemplo: 
 
Português 
 
 MeuSistema.CPU = “Pentium IV” 
 Se MeuSistema.data_de_Compra > #1/1/2002# Então 
 ..... 
 Fim Se 
 
Inglês 
 
 MeuSistema.CPU = “Pentium IV” 
 If MeuSistema.data_de_Compra > #1/1/2002# Then 
 ..... 
 End If 
 
 
 
Pode também assignar-se uma variável de tipo estruturado a outra, desde que do mesmo 
tipo definido pelo utilizador. 
Exemplo: TeuSistema = MeuSistema 
 
Uma variável de tipo definido pelo utilizador, pode conter qualquer tipo de dados em cada 
elemento.

Outros materiais