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