Informática II
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
2.2
2.3
TIPOS DE PROCEDIMENTOS ...............................................................................................................2
COMPONENTES DUM PROCEDIMENTO ...............................................................................................2
LIGAR PROCEDIMENTOS ...................................................................................................................2
3.
COMO É ORGANIZADO UM MÓDULO EM V. BASIC ............................................................3
4.
DECLARAÇÕES EM VISUAL BASIC...........................................................................................4
4.1
4.2
4.3
4.4
4.5
TIPOS DE VARIÁVEIS EM V. BASIC ....................................................................................................4
TIPO DE INFORMAÇÃO CARACTER - CHARACTER .............................................................................5
DECLARAÇÃO DE VARIÁVEIS ............................................................................................................5
DECLARAÇÃO DE CONSTANTES.........................................................................................................6
Â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
8.2
8.3
9.
10.
INSTRUÇÕES DE ATRIBUIÇÃO ...........................................................................................................9
INSTRUÇÕES DE LEITURA ...............................................................................................................10
INSTRUÇÕES DE ESCRITA ................................................................................................................11
COMENTÁRIOS .............................................................................................................................12
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.
11.1
11.2
12.
VARIÁVEIS DE TIPO ESTRUTURADO OU ARRAYS ........................................................29
ALTERAR O TAMANHO DE UM ARRAY EM RUN-TIME (ARRAYS DINÂMICOS) ............................32
ARRAYS MULTIDIMENSIONAIS ...................................................................................................33
TIPOS DE DADOS CRIADOS PELO UTILIZADOR.............................................................37
Visual Basic do Excel
1. Introdução
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.Value]
Nome = CaixaTexto1.Valor
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.
Informática II – Cap. III - Excel – Visual Basic
Pág.
1
VISUAL BASIC DO EXCEL
2. Procedimentos em Visual Basic
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.
Informática II – Cap. III - Excel – Visual Basic
Pág.
2
VISUAL BASIC DO EXCEL
3. Como é organizado um módulo em V. Basic
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
‘Início do Módulo
‘ESPECIFICAR OPÇÕES DO V. BASIC
Opção Explícita
Diferenças em Inglês
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
Proc Inicializar_Folha()
....
....
....
Fim Proc
Sub Vendas_Stock()
Fim Sub
Sub Inicializar_Folha()
Fim Sub
....
....
....
Informática II – Cap. III - Excel – Visual Basic
Pág.
3
VISUAL BASIC DO EXCEL
4. Declarações em Visual Basic
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)
Booleano
Inteiro
Longo
(Inteiro Longo)
Simples (VF de
Precisão Simples)
Duplo (VF de
Precisão Dupla)
Moeda
Data
Cadeia
Variante
Objecto
Definida
Utilizador
Tipo de Dados
(em Inglês)
Boolean
Integer
Long
Ocupação
(em bytes)
2 bytes
2 bytes
4 bytes
Intervalo de valores possíveis
Verdadeiro/True ou Falso/False
-32768 a 32767
-2,147,483,648 a 2,147,483,647
Single
4 bytes
Ver manual
Double
8 bytes
Ver manual
Currency
8 bytes
Valores com 4 casas décimais e
até aos biliões
Date
8 bytes
1 de Jan 0100 até 31 Dez 9999
String
1 bytes p/ caracter 0 a 65535 ou mais em alguns
sistemas
Variant
Como apropriado
Texto ou valores até Double
Object
4 bytes
Qualquer referência a um objecto
pelo Definida pelo Número requerido O de cada elemento que constitui
Utilizador
pelos elementos
o tipo de dados definido
Informática II – Cap. III - Excel – Visual Basic
Pág.
4
VISUAL BASIC DO EXCEL
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)
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
Informática II – Cap. III - Excel – Visual Basic
Declarações (em Inglês)
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
Pág.
5
VISUAL BASIC DO EXCEL
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
6
VISUAL BASIC DO EXCEL
5. Operadores
• 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.
6. Funções Predefinidas
As funções aceitam dados e produzem e devolvem resultados. Enumeram-se as seguintes:
Funções em
F. em
Significado
Português
Inglês
ABS(x)
- Calcula o módulo de x;
ARCTG(x)
- Ângulo, compreendido entre 0 e n, cuja tangente é x.
[ATN]
COS(x)
- Coseno de x, com x em radianos; e
EXP(x)
- Exponencial de x, ex;
FIXAR(x)
- Devolve parte inteira de um número;
[FIX]
INT(x)
- Devolve parte inteira de um número;
LN(x)
[LOG] - Logaritmo Natural de x, para x > 0;
RAIZQ(x)
- Calcula a raiz quadrada de x.
[SQR]
SEN(x)
- Seno de x, com x em radianos;
[SIN]
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)
- Devolve n caracteres da string str a partir da posição i;
[MID]
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
Fixar(99.8) = Int(99.8) = 99
Fixar(-99.8) = -99 Int(-99.) = -100
Car(65) = “A” Car(90)= “Z”
Car(97)= “a”
Car(122)= “z”
Asc(“A”) =65 Asc(“a”)=97
Informática II – Cap. III - Excel – Visual Basic
Em Inglês
Fix(99.8) = Int(99.8) = 99
Fix(-99.8) = -99 Int(-99.) = -100
Chr(65) = “A” Chr(90)= “Z”
Chr(97)= “a”
Chr(122)= “z”
(=)
Pág.
7
VISUAL BASIC DO EXCEL
Português
Car(Asc(“a”)-32)=“A”
Meio("Excel", 2, 3) = “xce”
RemEsp(" Excel v7 ") = “Excel v7”
NúmeroCar(" Excel v7 ") = 12
NúmeroCar(RemEsp(" Excel v7 ")) = 8
Em Inglês
Chr(Asc(“a”)-32)=“A”
Mid("Excel", 2, 3) = “xce”
Trim(" Excel v7 ") = “Excel v7”
Len(" Excel v7 ") = 12
Len(Trim(" Excel v7 ")) = 8
7. Expressões
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:
OPERADORES
(Português)
NÃO
* / \ RESTO E
+ - OU
= <> > >= < <=
(Inglês)
NOT
* / \ MOD AND
+ - OR
= <> > >= < <=
PRIORIDADES
4
3
2
1
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.
Informática II – Cap. III - Excel – Visual Basic
Pág.
8
VISUAL BASIC DO EXCEL
8. Instruções Básicas
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.
DIAGRAMA SINTÁTICO
IDENTIFICADOR
:=
EXPRESSÃO
O operador da instrução de atribuição é:
=
- toma o valor de
Exemplos:
I=3
J=I
x=I*J+5
a variável I toma o valor 3;
a variável J toma o valor da variável I;
a variável x toma o valor da expressão;
Informática II – Cap. III - Excel – Visual Basic
Pág.
9
VISUAL BASIC DO EXCEL
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
Inglês
CxEntrada(Prompt [,títulol][,val.defeito][,x pos][,y pos])
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
Inglês
Cod= CxEntrada(“Indique o Código do Produto”, “Consulta a Produtos”)
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 usarse a função conveniente para conversão de dados.
Exemplo:
Português
Inglês
N=Val(CxEntrada(“Numero Inteiro entre 1 e 100”)
N=Val(InputBox(“Numero Inteiro entre 1 e 100”)
Informática II – Cap. III - Excel – Visual Basic
Pág.
10
VISUAL BASIC DO EXCEL
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
Inglês
CxMsg(prompt [,botões] [título] [fich_Ajuda, contexto])
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?”
Style=vbSimNão+vbCrítico+vbBotãoAssumido2
Title=“Demostração da CxMsg”
Help=“Help.Hlp”
Ctxt=1000
‘Mostra a mensagem
Resp= CxMsg(Msg, Style, Title, Help, Ctxt)
Se Response=vbSim Então
MyString = “Sim”
‘OBS. 1
Senão
MyString = “Não”
‘OBS. 2
Fim Se
Msg=“Quer Continuar?”
Style=vbYesNo+vbCritical+vbDefaultButton2
Title=“Demostração da MsgBox”
Help=“Help.Hlp”
Ctxt=1000
‘Mostra a mensagem
Resp= MsgBox(Msg, Style, Title, Help, Ctxt)
If Response=vbSim Então
MyString = “Sim”
‘OBS. 1
Else
MyString = “Não”
‘OBS. 2
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.
Informática II – Cap. III - Excel – Visual Basic
Pág.
11
VISUAL BASIC DO EXCEL
9. Comentários
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 dizer que 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
Informática II – Cap. III - Excel – Visual Basic
Pág.
12
VISUAL BASIC DO EXCEL
10. Estruturas de Controlo
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 ...
Seleccionar Caso
[ If ... Then ... Else ...]
[Select Case]
10.2.1 Instrução de Selecção Se ... Então ... Senão...
DIAGRAMA SINTÁTICO
SE
Condição
Informática II – Cap. III - Excel – Visual Basic
ENTÃO
Instrução
SENÃO
Instrução
Pág.
13
VISUAL BASIC DO EXCEL
ESQUEMA
Falsa
Verdadeira
Expressão ?
Falsa
Expressão ?
Verdadeira
Instrução 1
Instrução 2
Instrução 1
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
14
VISUAL BASIC DO EXCEL
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
15
VISUAL BASIC DO EXCEL
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
16
VISUAL BASIC DO EXCEL
10.2.2 Instrução de Selecção Seleccionar Caso... Fim Seleccionar
ESQUEMA
C7
C1
Expressão ?
C5
C2, C3
Instrução 1
Instrução 2
Instrução 3
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.
Informática II – Cap. III - Excel – Visual Basic
Pág.
17
VISUAL BASIC DO EXCEL
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
18
VISUAL BASIC DO EXCEL
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:
[ Do ... Loop ]
[ For ... Next ]
[ For Each ... Next ]
Faz ... Ciclo
Para ... Seguinte
Para Cada ... Seguinte
10.3.1 Instrução de Repetição Faz ... Ciclo
ESQUEMA
Expressão ?
Falsa
Verdadeira
Instrução
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:
Informática II – Cap. III - Excel – Visual Basic
Pág.
19
VISUAL BASIC DO EXCEL
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.
Informática II – Cap. III - Excel – Visual Basic
Pág.
20
VISUAL BASIC DO EXCEL
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
21
VISUAL BASIC DO EXCEL
2.
Faz
Do
....
....
Ciclo Enquanto Condição
....
....
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.
ESQUEMA
Instrução 1
Instrução 2
Instrução n
Expressão ?
Falsa
Verdadeira
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
22
VISUAL BASIC DO EXCEL
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
23
VISUAL BASIC DO EXCEL
3.
Faz AtéQue Condição
....
....
Ciclo
Do Until Condição
....
....
Loop
Faz
Do
....
....
Ciclo AtéQue Condição
....
....
Loop Until Condição
ou
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
24
VISUAL BASIC DO EXCEL
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 mais dados?”, 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.
Informática II – Cap. III - Excel – Visual Basic
Pág.
25
VISUAL BASIC DO EXCEL
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.
Informática II – Cap. III - Excel – Visual Basic
Pág.
26
VISUAL BASIC DO EXCEL
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
27
VISUAL BASIC DO EXCEL
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.
Informática II – Cap. III - Excel – Visual Basic
Pág.
28
VISUAL BASIC DO EXCEL
11. Variáveis de Tipo estruturado ou Arrays
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:
Informática II – Cap. III - Excel – Visual Basic
Pág.
29
VISUAL BASIC DO EXCEL
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).
Informática II – Cap. III - Excel – Visual Basic
Pág.
30
VISUAL BASIC DO EXCEL
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, Nivel As 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
Informática II – Cap. III - Excel – Visual Basic
Pág.
31
VISUAL BASIC DO EXCEL
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.
Informática II – Cap. III - Excel – Visual Basic
Pág.
32
VISUAL BASIC DO EXCEL
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
x[1]
7
8
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
A(1,4)
i=2
i=3
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”
Informática II – Cap. III - Excel – Visual Basic
Pág.
33
VISUAL BASIC DO EXCEL
Tabela Tridimensional
k
B(3,3,3)
k=3
i
k=2
j=1
k=1
j
j=2
j=3
i=1
i=2
i=3
B(3,3,1)
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
34
VISUAL BASIC DO EXCEL
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
35
VISUAL BASIC DO EXCEL
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
36
VISUAL BASIC DO EXCEL
12. Tipos de Dados Criados pelo Utilizador
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
Informática II – Cap. III - Excel – Visual Basic
Pág.
37
VISUAL BASIC DO EXCEL
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.
Informática II – Cap. III - Excel – Visual Basic
Pág.
38
Download

Programação em V.Basic do Excel