Вы находитесь на странице: 1из 40

Informtica II

Gesto Comercial e da Produo

EXCEL Visual Basic


(TPICOS ABORDADOS NAS AULAS DE INFORMTICA II)

Curso de Gesto Comercial e da Produo Ano Lectivo 2002/2003

Por: Cristina Wanzeller / Jorge Loureiro

Informtica II
Gesto Comercial e da Produo

NDICE
1. 2. 2.1 2.2 2.3 3. 4. 4.1 4.2 4.3 4.4 4.5 5. 6. 7. 8. 8.1 8.2 8.3 9. 10. INTRODUO ..................................................................................................................................1 PROCEDIMENTOS EM VISUAL BASIC......................................................................................2 TIPOS DE PROCEDIMENTOS ...............................................................................................................2 COMPONENTES DUM PROCEDIMENTO ...............................................................................................2 LIGAR PROCEDIMENTOS ...................................................................................................................2 COMO ORGANIZADO UM MDULO EM V. BASIC ............................................................3 DECLARAES EM VISUAL BASIC...........................................................................................4 TIPOS DE VARIVEIS EM V. BASIC ....................................................................................................4 TIPO DE INFORMAO CARACTER - CHARACTER .............................................................................5 DECLARAO DE VARIVEIS ............................................................................................................5 DECLARAO DE CONSTANTES.........................................................................................................6 MBITO DE UMA VARIVEL E DE UMA CONSTANTE...........................................................................6 OPERADORES ..................................................................................................................................7 FUNES PREDEFINIDAS............................................................................................................7 EXPRESSES....................................................................................................................................8 INSTRUES BSICAS..................................................................................................................9 INSTRUES DE ATRIBUIO ...........................................................................................................9 INSTRUES DE LEITURA ...............................................................................................................10 INSTRUES DE ESCRITA ................................................................................................................11 COMENTRIOS .............................................................................................................................12 ESTRUTURAS DE CONTROLO ..............................................................................................13

10.1 SEQUNCIA ................................................................................................................................13 10.2 SELECO ..................................................................................................................................13 10.2.1 Instruo de Seleco Se ... Ento ... Seno... ..................................................................13 10.2.2 Instruo de Seleco Seleccionar Caso... Fim Seleccionar............................................17 10.3 REPETIO .................................................................................................................................19 10.3.1 Instruo de Repetio Faz ... Ciclo.................................................................................19 10.3.2 Instruo de Repetio Para ... Seguinte .........................................................................25 10.3.3 Instruo de Repetio Para Cada ... Seguinte................................................................27 11. 11.1 11.2 12. VARIVEIS DE TIPO ESTRUTURADO OU ARRAYS ........................................................29 ALTERAR O TAMANHO DE UM ARRAY EM RUN-TIME (ARRAYS DINMICOS) ............................32 ARRAYS MULTIDIMENSIONAIS ...................................................................................................33 TIPOS DE DADOS CRIADOS PELO UTILIZADOR.............................................................37

Visual Basic do Excel

1. Introduo
O objectivo de um programa o clculo de valores. O computador manipula representaes de valores, que no so mais do que configuraes de bits ou palavras da memria. As representaes fsicas variam segundo os objectos a representar. necessrio a especificao do tipo de valores a manipular. Cada objecto ter um nome, para alm 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

Variveis - nome fixo, tipo fixo e valor varivel. Exemplo:


Factor - varivel de nome factor, do tipo inteiro e de valor varivel. A varivel toma um valor, ou mais, durante a execuo do programa.

Objectos V. Basic ou Excel - Um boto, caixa de dilogo, folha, livro, podendo


ter propriedades e mtodos. Exemplo:
CaixaTexto1 - Objecto que uma caixa de texto (onde se pode escrever texto), cuja propriedade Valor [Value em Ingls], contm a string mostrada nessa caixa. Para atribuirmos esse valor varivel Nome, faremos: [Nome = CaixaTexto1.Value] Nome = CaixaTexto1.Valor

Um programa em linguagem Visual Basic deve ser constitudo por trs partes fundamentais: o cabealho, onde indicado o nome do procedimento, tipo e tambm as origens dos dados de entrada e dos resultados; as declaraes de todas as variveis e constantes que intervm no programa, e as definies dos seus tipos; e o corpo do programa, onde aparecem as instrues que determinam as aces a executar ao longo do programa. Esta estruturao no de todo obrigatria, j que a declarao de variveis e constantes no obrigatria e pode tambm fazer-se em qualquer local do corpo do programa. De qualquer forma, recomenda-se a especificao obrigatria das variveis e constantes e, pelo menos as mais relevantes devero ser definidas no incio de cada procedimento ou mdulo.

Informtica II Cap. III - Excel Visual Basic

Pg.

VISUAL BASIC DO EXCEL

2. Procedimentos em Visual Basic

Os procedimentos so blocos de cdigo V.Basic, que digitado num mdulo V.B., sendo cada um executado como uma unidade. O cdigo V.B. de um procedimento, indica o que fazer; Uma instruo uma unidade sintacticamente completa de cdigo, que expressa uma aco; Ex.Lucro_Lquido=Lucro_Bruto - Margem Uma funo retorna um valor; Ex. Maiscula [Ucase em Ingls], retorna o texto em letras maisculas.

2.1 Tipos de Procedimentos Os procedimentos podem ser: Procedimentos Proc [Sub em Ingls] - No retornam um valor Inicia com um Proc e termina com Fim Proc [End Sub em Ingls ] Procedimento Funo [Function em Ingls] - Retornam um valor ao procedimento chamante Inicia com Funo e termina com Fim Funo [End Function em Ingls ] 2.2 Componentes dum Procedimento Um procedimento tem: Funo ... Fim Funo [Function ... End Function] ou ou Proc ... Fim Proc [Sub ... End Sub] Nome Argumentos (opcionais) Cdigo Visual Basic Valor de retorno que existe na funo e no existe no Proc/Sub. 2.3 Ligar Procedimentos Idealmente um procedimento deve fazer uma coisa e bem. Devem criar-se procedimentos curtos, reutilizveis, fceis de manter e que possam trabalhar em conjunto. Procedimentos curtos so mais facilmente desenhveis, de implementar, de corrigir e alterar, dado que tm muito menos cdigo. Com muitos procedimentos pode tambm evitar-se a escrita do mesmo cdigo muitas vezes, colocando o cdigo a repetir num procedimento e invoc-lo, quando necessrio. Um procedimento pode chamar outros e este invocar outros e assim sucessivamente.

Informtica II Cap. III - Excel Visual Basic

Pg.

VISUAL BASIC DO EXCEL

3. Como organizado um mdulo em V. Basic

Um mdulo em V. Basic, contm usualmente, vrios procedimentos. A sua ordem irrelevante, a no ser por uma questo de sistematizao do problema. H no entanto regras que devem ser obedecidas. No incio h uma rea, denominada Seco de Declaraes, onde devem ser declaradas constantes e variveis comuns ao mdulo ou ao livro, outras informaes e opes de funcionamento do V.B. Exemplo:
Em Portugus Diferenas em Ingls

Incio do Mdulo ESPECIFICAR OPES DO V. BASIC Opo Explcita

Option Explicit

DECLARAES DE CONSTANTES E VARIVEIS DO MDULO Declarao de constantes Pblico Const DowJones=3500 Public Const DowJones=3500 Declaraes de variveis Decl Prec_Orig Dim Prec_Orig Decl Num_Vendas, Prec_Venda Dim Num_Vendas, Prec_Venda Fim de declaraes. 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

Informtica II Cap. III - Excel Visual Basic

Pg.

VISUAL BASIC DO EXCEL

4. Declaraes em Visual Basic

4.1 Tipos de variveis em V. Basic Na linguagem V. Basic qualquer tipo de informao (dado) tem associado o seu tipo, implcita ou explicitamente, de tal modo que: o tipo da informao determina a gama de valores que esta pode tomar e a gama de operaes que lhe pode ser aplicada; cada informao tem um tipo, que pode ser redefinido internamente pelo V.B. em caso de necessidade; o tipo de informao pode ser deduzido s pela sua forma ou contexto, sem qualquer conhecimento do valor que lhe poder ser atribudo durante a execuo do programa; cada operador requer operandos e produz resultados de um determinado tipo.

Na tabela seguinte so mostrados os tipos de variveis do V. Basic.


Tipo de Dados (em Portugus) Booleano Inteiro Longo (Inteiro Longo) Simples (VF de Preciso Simples) Duplo (VF de Preciso Dupla) Moeda Data Cadeia Variante Objecto Definida Utilizador Tipo de Dados (em Ingls) Boolean Integer Long Single Double Currency Ocupao (em bytes) 2 bytes 2 bytes 4 bytes 4 bytes 8 bytes 8 bytes Intervalo de valores possveis Verdadeiro/True ou Falso/False -32768 a 32767 -2,147,483,648 a 2,147,483,647 Ver manual Ver manual

Valores com 4 casas dcimais e at aos bilies 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 referncia a um objecto pelo Definida pelo Nmero requerido O de cada elemento que constitui Utilizador pelos elementos o tipo de dados definido

Informtica II Cap. III - Excel Visual Basic

Pg.

VISUAL BASIC DO EXCEL

4.2 Tipo de Informao 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; Dgitos - 0, 1, ..., 9; Caracteres especiais -! " # $ % & ' ( ) * + - , . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ etc Caracter branco ou espao. O valor do tipo caracter designado entre aspas: A 3 !

Os caracteres so representados internamente no computador por um conjunto de zeros e uns, por exemplo, a tabela ASCII.

4.3 Declarao de Variveis Como j atrs foi dito, as variveis em V.B. no tm de ser obrigatoriamente explicitadas, embora seja conveniente faze-lo, pois torna o cdigo de execuo mais rpida e mais explcito. Para que o V.B verifique da existncia de declarao de variveis, colocar o statement Opo Explcita [Option Explicit] no incio de cada mdulo (seco de declaraes). Uma varivel definida por um identificador com um nome fixo, tipo fixo e valor varivel. Exemplos:
Declaraes (em Portugus) Declaraes (em Ingls)

Decl S como Cadeia, Nome como Cadeia Decl ENome como Cadeia * 50 (ENome - varivel de tamanho fixo) Decl DataDia como Data Decl Boto como Objecto Decl Nmero1 como Inteiro Decl SimNao como Booleano Decl QualquerCoisa como Variante

Dim S As String, Nome As String Dim ENome As String * 50 (ENome - varivel de tamanho fixo) Dim DataDia As Date Dim Boto As Object Dim Nmero1 As Integer Dim SimNao As Boolean Dim QualquerCoisa As Variant

Informtica II Cap. III - Excel Visual Basic

Pg.

VISUAL BASIC DO EXCEL

4.4 Declarao de constantes Uma constante um identificador utilizado em substituio de um determinado valor. As constantes tornam-se particularmente teis quando existe um valor que utilizado vrias vezes no programa e/ou quando um valor difcil de memorizar. Por outro lado, a utilizao de constantes torna um programa mais claro e facilita a sua manuteno. Exemplos: Const PI=3.14159265 Const PI2=PI * 2

4.5 mbito de uma varivel e de uma constante Caso uma varivel seja definida dentro dum procedimento, s o cdigo dentro desse procedimento pode aceder ou alterar o valor da varivel. Por vezes, necessrio que o valor duma varivel seja visvel, fora do procedimento (em todo o mdulo ou em todo o livro), chamando-se a essa disponibilidade de aceder varivel o seu mbito. Dependendo onde se declarar a varivel, o respectivo mbito pode ser de 3 tipos: mbito Local Mdulo Declarao da Varivel Decl [Dim] ou Esttica [Static] dentro do procedimento Decl [Dim], Esttica [Static] ou Priv [Private] no incio do mdulo Pblico [Public] no incio do mdulo

Publico

O mbito de uma constante tambm depende do local e da forma como esta declarada. Assim sendo os mbitos possveis so: mbito Local Mdulo Publico Declarao de Constante Declarao da constante dentro do procedimento Priv[Private] Const ... no incio do mdulo Pblico[Public] Const ... no incio do mdulo

Informtica II Cap. III - Excel Visual Basic

Pg.

VISUAL BASIC DO EXCEL

5. Operadores

Aritmticos: +, -, /, *, ^, \ (diviso inteira) e Resto [Mod em Ingls] (resto inteiro) Concatenao: & Lgicos: E [And], Eqv, Imp, No [Not], Ou [Or] e OuX [XoR] Comparao: =, <, <=, >, >= e <> For [Is] (operador equivalncia) e Semelhante [Like] (operador semelhana) Ex. Texto = Mystery Semelhante M*y [ Texto = Mystery Like M*y], retorna o valor lgico Verdadeiro.

6. Funes Predefinidas

As funes aceitam dados e produzem e devolvem resultados. Enumeram-se as seguintes: Funes em F. em Significado Portugus Ingls ABS(x) - Calcula o mdulo 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 nmero; [FIX] INT(x) - Devolve parte inteira de um nmero; 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 cdigo associado ao 1 caracter da string str; CAR(c) [CHR] - Devolve caracter correspondente ao cdigo c; VAL(str) - Devolve nmeros contidos na string str; MEIO(str,i,n) - Devolve n caracteres da string str a partir da posio i; [MID] REMESP(str) [TRIM] - Devolve string str sem espaos no incio e no fim; NMEROCAR(x) [LEN] - Se x for uma string devolve n de caracteres da string; H centenas de outras que podero ser consultadas no manual OnLine, em caso de necessidade. Exemplos: Portugus 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
Informtica II Cap. III - Excel Visual Basic

Em Ingls 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 (=)
Pg.

VISUAL BASIC DO EXCEL

Portugus Car(Asc(a)-32)=A Meio("Excel", 2, 3) = xce RemEsp(" Excel v7 ") = Excel v7 NmeroCar(" Excel v7 ") = 12 NmeroCar(RemEsp(" Excel v7 ")) = 8

Em Ingls 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. Expresses

Expresses so regras para calcular valores, consistindo num conjunto de operandos ligados por operadores. No V. Basic os operadores tm as seguintes prioridades:

OPERADORES (Portugus) NO * / \ RESTO E + - OU = <> > >= < <= (Ingls) NOT * / \ MOD AND + - OR = <> > >= < <= PRIORIDADES 4 3 2 1

As regras para o clculo de expresses so as seguintes:

Se todos os operadores tm igual prioridade, o clculo efectuado da esquerda


para a direita; Se os operadores tm prioridades diferentes, as operaes so efectuadas por ordem de prioridade, comeando na prioridade mais elevada; e As duas primeiras regras podem ser alteradas por utilizao de parntesis, efectuando-se neste caso primeiro as operaes dentro de parntesis.

Informtica II Cap. III - Excel Visual Basic

Pg.

VISUAL BASIC DO EXCEL

8. Instrues Bsicas

8.1 Instrues de Atribuio Instrues de atribuio so as instrues utilizadas para atribuir um valor particular a uma varivel, valor esse que especificado sob a forma de uma expresso.
DIAGRAMA SINTTICO IDENTIFICADOR

:=

EXPRESSO

O operador da instruo de atribuio : = Exemplos: I=3 J=I x=I*J+5 a varivel I toma o valor 3; a varivel J toma o valor da varivel I; a varivel x toma o valor da expresso; - toma o valor de

Informtica II Cap. III - Excel Visual Basic

Pg.

VISUAL BASIC DO EXCEL

8.2 Instrues de Leitura Mostram uma caixa de dilogo e esperam que o utilizador escreva texto ou escolha um boto, retornando ento o contedo da caixa de texto.

Sintaxe em: Portugus Ingls

CxEntrada(Prompt [,ttulol][,val.defeito][,x pos][,y pos]) InputBox(Prompt [,ttulol][,val.defeito][,x pos][,y pos])

Se o utilizador seleccionar o boto OK ou bater Enter, a funo CxEntrada/InputBox retorna o contedo da caixa de texto. Com Cancelar ou Escape, retorna uma string de comprimento nulo .

Exemplo: Portugus Ingls

Cod= CxEntrada(Indique o Cdigo do Produto, Consulta a Produtos) Cod= InputBox(Indique o Cdigo do Produto, Consulta a Produtos)

Obs. A funo CxEntrada/ InputBox, retorna uma string. Caso o tipo de dados da varivel para a qual vai ser transferida o valor retornado pela funo, seja de outro tipo, deve usarse a funo conveniente para converso de dados.

Exemplo: Portugus Ingls

N=Val(CxEntrada(Numero Inteiro entre 1 e 100) N=Val(InputBox(Numero Inteiro entre 1 e 100)

Informtica II Cap. III - Excel Visual Basic

Pg.

10

VISUAL BASIC DO EXCEL

8.3 Instrues de Escrita Mostram uma mensagem numa caixa de dilogo. A caixa s fechada depois de o utilizador clicar um dos botes disponveis. O valor retornado pela funo, indica o boto que foi clicado pelo utilizador. Sintaxe: Portugus Ingls CxMsg(prompt [,botes] [ttulo] [fich_Ajuda, contexto]) MsgBox(prompt [,botes] [ttulo] [fich_Ajuda, contexto])

Obs. Para informaes quanto ao item botes e valor retornado, recomenda-se a consulta ao help do V. Basic. Exemplo: O exemplo que se segue, usa a funo CxMsg/MsgBox para mostrar uma mensagem crtica de erro, com o boto Sim e No. O boto No especificado como boto de resposta por defeito. O valor retornado pela CxMsg/ MsgBox, depende do boto seleccionado pelo utilizador. Para os propsitos deste exemplo, assume-se que o Help.Hlp um ficheiro de help que contm um tpico de ajuda de contexto com n 1000.

Portugus
Msg=Quer Continuar? Style=vbSimNo+vbCrtico+vbBotoAssumido2 Title=Demostrao da CxMsg Help=Help.Hlp Ctxt=1000 Mostra a mensagem Resp= CxMsg(Msg, Style, Title, Help, Ctxt) Se Response=vbSim Ento MyString = Sim OBS. 1 Seno MyString = No OBS. 2 Fim Se

Ingls
Msg=Quer Continuar? Style=vbYesNo+vbCritical+vbDefaultButton2 Title=Demostrao da MsgBox Help=Help.Hlp Ctxt=1000 Mostra a mensagem Resp= MsgBox(Msg, Style, Title, Help, Ctxt) If Response=vbSim Ento MyString = Sim OBS. 1 Else MyString = No OBS. 2 End If

OBS: 1- O utilizador clicou o boto Sim 2- O utilizador clicou o boto No As instrues de escrita podem ser formatadas, isto , para cada sada podemos indicar a largura (em caracteres) desse campo e tambm o nmero de casas decimais, se o campo for do tipo real. Utiliza-se a funo Formatar [Format], cuja sintaxe e informao adicional se recomenda consulta no Help OnLine.

Informtica II Cap. III - Excel Visual Basic

Pg.

11

VISUAL BASIC DO EXCEL

9. Comentrios

So frases dentro do programa que ajudam sua compreenso. Os comentrios so constitudos por uma sequncia de caracteres iniciados por plica () e que termina no fim da linha. Quer isto dizer que poderemos escrever uma instruo e indicar no final dela o respectivo propsito em comentrio. Se pretendermos que toda a linha seja um comentrio, ento colocaremos a plica no seu incio. Exemplos: I = I + 1 Incrementar a varivel I Procedimento destinado a calcular os nmeros primos at ao inteiro a indicar Portugus Proc Permetro() calcula o permetro de uma circunferncia, de raio R Const PI = 3.14 Decl R como simples, Per como simples Inicio do tratamento R=Val(CxEntrada(Insira o Raio da circunferncia) Clculo do valor do permetro, utilizando a frmula respectiva Per = 2 * PI * R; Impresso do resultado CxMsg(O permetro da circ. de raio & R & igual a & Per) Fim Proc Ingls Sub Permetro() calcula o permetro de uma circunferncia, de raio R Const PI = 3.14 Dim R As Single, Per As Single Inicio do tratamento R=Val(InputBox(Insira o Raio da circunferncia) Clculo do valor do permetro, utilizando a frmula respectiva Per = 2 * PI * R; Impresso do resultado Msgox(O permetro da circ. de raio & R & igual a & Per) End Sub

Informtica II Cap. III - Excel Visual Basic

Pg.

12

VISUAL BASIC DO EXCEL

10. Estruturas de Controlo

Existem trs estruturas de controlo: sequncia, repetio e seleco. 10.1 Sequncia As instrues so executadas sequencialmente. ... Inst. 1 Inst. 2 ... Na mesma linha podem colocam-se 2 ou mais instrues, desde que separadas com dois pontos (:). Obs. Apesar duma linha poder ter um maior comprimento do que a largura do ecran disponvel, sendo efectuado o scroll horizontal automaticamente, pode suceder que pretendamos continuar uma instruo na linha seguinte. Para esse propsito, coloca-se no fim da linha um underscore (_).

10.2 Seleco As instrues de seleco permitem a execuo condicional entre uma ou mais instrues. Existem no Visual Basic duas instrues de seleco: Se ... Ento ... Seno ... Seleccionar Caso [ If ... Then ... Else ...] [Select Case]

10.2.1 Instruo de Seleco Se ... Ento ... Seno...

DIAGRAMA SINTTICO SE Condio ENTO Instruo

SENO

Instruo

Informtica II Cap. III - Excel Visual Basic

Pg.

13

VISUAL BASIC DO EXCEL

ESQUEMA

Falsa Expresso ? Verdadeira

Verdadeira Expresso ? Instruo 1

Falsa

Instruo 2

Instruo 1

A instruo Se pode ser composta. Existem duas maneiras de ela ser composta:

- se a instruo depois do Seno[Else] outra instruo Se [If]. Exemplo:

Portugus Se condio1 Ento instruo1 SenoSe condio2 Ento instruo2 Seno instruo3 Fim Se Ingls If condio1 Then instruo1 ElseIf condio2 Then instruo2 Else instruo3 End If

- se a instruo depois do Ento [Then] outra instruo Se [If]. Exemplo:

Portugus Se condio1 Ento Se condio2 Ento Se condio3 Ento instruo1 Seno instruo2 Fim Se Seno instruo3 Fim Se Seno instruo4 Fim Se Ingls
Informtica II Cap. III - Excel Visual Basic Pg.

14

VISUAL BASIC DO EXCEL

If condio1 Then If condio2 Then If condio3 then instruo1 Else instruo2 End If Else instruo3 End If Else instruo4 End If

Exemplo: Programa que l trs nmeros inteiros indicados por ordem crescente e diz se podero ser considerados como os lados de um tringulo; em caso afirmativo diz de que tipo de tringulo se trata.

Portugus Proc Tringulo() Decl a, b, c Como Inteiro a=Val(CxEntrada(Introduza o Comp. do 1 lado do tringulo)) b=Val(CxEntrada(Introduza o Comp. do 2 lado do tringulo)) c=Val(CxEntrada(Introduza o Comp. do 3 lado do tringulo)) Se a + b > c Ento Se a = c Ento CxMsg(a= & a & , b= & b & , c= & c & - Tringulo Equiltero ) SenoSe ( a = b ) ou ( b = c ) Ento CxMsg(a= & a & , b= & b & , c= & c & - Tringulo Issceles ) Seno CxMsg(a= & a & , b= & b & , c= & c & - Tringulo Escaleno ) Fim Se Seno CxMsg(No um Tringulo!!!) Fim Se Fim Proc

Informtica II Cap. III - Excel Visual Basic

Pg.

15

VISUAL BASIC DO EXCEL

Ingls

Sub Tringulo() Dim a, b, c As Integer a=Val(InputBox(Introduza o Comp. do 1 lado do tringulo)) b=Val(InputBox (Introduza o Comp. do 2 lado do tringulo)) c=Val(InputBox (Introduza o Comp. do 3 lado do tringulo)) If a + b > c Then If a = c Then Msgbox(a= & a & , b= & b & , c= & c & - Tringulo Equiltero ) ElseIf ( a = b ) Or ( b = c ) Then Msgbox (a= & a & , b= & b & , c= & c & - Tringulo Issceles ) Else Msgbox (a= & a & , b= & b & , c= & c & - Tringulo Escaleno ) End If Else Msgbox (No um Tringulo!!!) End If End Sub

Informtica II Cap. III - Excel Visual Basic

Pg.

16

VISUAL BASIC DO EXCEL

10.2.2 Instruo de Seleco Seleccionar Caso... Fim Seleccionar


ESQUEMA

C1 Expresso ? C2, C3 Instruo 1 Instruo 2 C5 Instruo 3

C7

Sintaxe Formal: Em Portugus Seleccionar Caso expresso_de_teste Caso lista1expresso Instrues Caso lista2expresso Instrues ...... ...... Caso Seno Instrues Fim Seleccionar Em Ingls Select Case expresso_de_teste Case lista1expresso Instrues Case lista2expresso Instrues ...... ...... Case Else Instrues End Select

Cada listaexpresso uma lista de um ou mais valores, se muitos, sero separados por vrgulas. Se mais de um Caso igual a expresso_de_teste, s o bloco de instrues associado ao 1 caso executado. O V. Basic executar as instrues do Caso Seno, se nenhum dos listaexpresso satisfizer a expresso_de_teste.

Informtica II Cap. III - Excel Visual Basic

Pg.

17

VISUAL BASIC DO EXCEL

Exemplo: Programa para escrever o ltimo dia de um determinado ms e de um ano compreendido entre 1900 e 2000. Portugus Proc ultimoDia() Decl mes, ano Como Inteiro mes=Val(CxEntrada(Introduza o Ms)) 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 Ento CxMsg(mes & tem 29 dias!) Seno CxMsg(mes & tem 28 dias!) Fim Se Fim Seleccionar Fim Proc Ingls Sub ultimoDia() Dim mes, ano As Integer mes=Val(InputBox(Introduza o Ms)) 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

Informtica II Cap. III - Excel Visual Basic

Pg.

18

VISUAL BASIC DO EXCEL

10.3 Repetio As instrues de repetio implicam a existncia de um ciclo no programa, que vai permitir a repetio de uma instruo ou de uma instruo composta, sujeita a uma condio que determina o final da instruo de repetio. Existem no V. Basic trs instrues de repetio: Faz ... Ciclo Para ... Seguinte Para Cada ... Seguinte [ Do ... Loop ] [ For ... Next ] [ For Each ... Next ]

10.3.1 Instruo de Repetio Faz ... Ciclo

ESQUEMA

Expresso ? Verdadeira Instruo

Falsa

H trs variantes desta instruo: 1. Com teste prvio condio no incio do Ciclo, enquanto condio for verdadeira. 2. Idem anterior, com teste condio no final do Ciclo, executando as instrues do Ciclo, pelo menos uma vez. 3. Correr o Ciclo at que condio seja verdadeira.

1.
Faz Enquanto Condio .... .... Ciclo Do While Condio .... .... Loop

A expresso condio, dever produzir um valor lgico. de realar que a condio verificada antes da execuo de qualquer instruo do Ciclo. Assim, essas instrues podem nunca ser executadas, desde que a condio do Ciclo seja inicialmente falsa. Obs. Caso o Ciclo esteja mal construdo, motivando a sua execuo infinita, situao que deve obviamente ser evitada, pode parar-se a execuo com a tecla Esc. Exemplos:
Informtica II Cap. III - Excel Visual Basic Pg.

19

VISUAL BASIC DO EXCEL

A funo que se segue, conta as ocorrncias 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 nmero qualquer de vezes, podendo tambm nunca ser executado, se inicialmente a condio for falsa. Portugus Funo 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 Funo Ingls 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 funo PosCadeia [Instr] devolve a posio da primeira ocorrncia de uma string noutra string. Para obteno de informao adicional recomenda-se a consulta ao help do V. Basic.

Informtica II Cap. III - Excel Visual Basic

Pg.

20

VISUAL BASIC DO EXCEL

Este outro programa l dois inteiros positivos e divide o primeiro pelo segundo, usando s as operaes de soma e subtraco. Portugus 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 Ingls 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

Informtica II Cap. III - Excel Visual Basic

Pg.

21

VISUAL BASIC DO EXCEL

2.
Faz .... .... Ciclo Enquanto Condio Do .... .... Loop While Condio

Neste caso, a instruo permite correr as instrues do Ciclo antes e no final de cada Ciclo efectuar o teste condio. Esta variao de procedimento, garante que as instrues contidas no Ciclo so executadas pelo menos uma vez.

ESQUEMA

Instruo 1

Instruo 2

Instruo n

Expresso ? Falsa Verdadeira

Exemplos: Portugus Faz ProcDados Chama o procedim. que processa os dados pelo menos uma vez Resposta=CxMsg(Pretende processar mais dados?, vbSimNo) Ciclo Enquanto Resposta = vbSim Ingls Do ProcDados Chama o procedim. que processa os dados pelo menos uma vez Resposta=MsgBox(Pretende processar mais dados?, vbYesNo) Loop While Resposta = vbYes

Informtica II Cap. III - Excel Visual Basic

Pg.

22

VISUAL BASIC DO EXCEL

O proc. Divisao1, mas partindo do princpio que o primeiro inteiro maior que o segundo. Portugus 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 Ingls 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

Informtica II Cap. III - Excel Visual Basic

Pg.

23

VISUAL BASIC DO EXCEL

3.
Faz AtQue Condio .... .... Ciclo Do Until Condio .... .... Loop

ou

Faz .... .... Ciclo AtQue Condio

Do .... .... Loop Until Condio

Tambm com duas variantes, tal como o Ciclo Enquanto, com teste prvio ou no final do Ciclo. A diferena entre este tipo de Ciclo e o anterior, reside no facto de, neste caso, o Ciclo executado enquanto a condio for falsa em vez de verdadeira.

Exemplos: 1. Com teste prvio Portugus Faz AtQue Resposta = vbNo ProcDados Chama o procedim. que processa os dados pelo menos uma vez Resposta=CxMsg(Pretende processar mais dados?, vbSimNo) Ciclo Ingls Do Util Resposta = vbNo ProcDados Chama o procedim. que processa os dados pelo menos uma vez Resposta=MsgBox(Pretende processar mais dados?, vbYesNo) Loop

Informtica II Cap. III - Excel Visual Basic

Pg.

24

VISUAL BASIC DO EXCEL

2. Com teste no final do Ciclo Portugus Faz ProcDados Chama o procedim. que processa os dados pelo menos uma vez Resposta=CxMsg(Pretende processar mais dados?, vbSimNo) Ciclo AtQue Resposta = vbNo Ingls 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 Instruo de Repetio Para ... Seguinte Sintaxe: Portugus Para contador = incio At Fim [Inc incremento] instrues Seguinte [contador] Ingls For contador = incio To Fim [Step incremento] instrues Next [contador]

usada quando o nmero de repeties no depende do efeito das instrues dentro do ciclo. A varivel de controlo vai sendo incrementada ou decrementada do valor dado por incremento, desde um valor inicial, correspondente a incio (literal ou expresso), at a um valor final, dado pelo Fim (literal ou expresso). Os argumentos contador, incio, fim e incremento so todas numricas. O incremento pode ser positivo ou negativo.

Informtica II Cap. III - Excel Visual Basic

Pg.

25

VISUAL BASIC DO EXCEL

Exemplo:

Programa para calcular a soma de vrios inteiros positivos. O primeiro valor a entrar um inteiro que d o nmero de inteiros cuja soma se pretende calcular. Portugus Proc soma() Decl comp, k, I, soma Como Inteiro comp = Val(CxEntrada(Somar quantos nmeros inteiros?)) soma = 0; Para k = 1 at comp I = Val(CxEntrada(Prximo Nmero a somar)) soma = soma + 1 Seguinte k CxMsg( A soma : & soma) Fim Proc Ingls Sub soma() Dim comp, k, I, soma As Integer comp = Val(InputBox(Somar quantos nmeros inteiros?)) soma = 0; For k = 1 TO comp I = Val(InputBox(Prximo Nmero 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 incio 2. Testa para ver se contador maior do que o Fim. Se for, o V. Basic sai do Ciclo. 3. Corre as instrues 4. Incrementa o contador de 1, ou de incremento, caso tenha sido especificado 5. Repete os passos 2 a 4.

Informtica II Cap. III - Excel Visual Basic

Pg.

26

VISUAL BASIC DO EXCEL

10.3.3 Instruo de Repetio Para Cada ... Seguinte Sintaxe: Portugus Para Cada elemento Em grupo instrues Seguinte elemento Ingls For Each elemento In groupo Instrues Next elemento

semelhante ao Ciclo Para Seguinte, mas repete um conjunto de instrues para cada elemento de uma coleco de objectos ou num array, em vez de repetir as instrues um nmero de vezes especificado. Isto de especial ajuda se no se sabe quantos elementos esto no grupo. de utilizao muito interessante na criao de macros para tratamento de dados em folhas. Exemplo: Portugus Proc IncrementarSelecoCorrente() Assigna uma referncia de objecto ( a seleco actual) a uma varivel DefRef Intervalo_a_Incrementar = Seleco C refere-se a uma clula particular durante cada iterao do Ciclo Para Cada C Em Intervalo_a_Incrementar Se ForNumrico(C.Valor) Ento C.Valor = C.Valor + 1 Fim Se Seguinte C Fim Proc

Informtica II Cap. III - Excel Visual Basic

Pg.

27

VISUAL BASIC DO EXCEL

Ingls Sub IncrementarSelecoCorrente() Set Intervalo_a_Incrementar = Selection C refere-se a uma clula 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 instrues 3. Testa para ver se elemento o ltimo no grupo. Se for, Visual Basic sai do Ciclo. 4. Define elemento nomeando o prximo elemento no grupo. 5. Repete os passos 2 at 4.

Informtica II Cap. III - Excel Visual Basic

Pg.

28

VISUAL BASIC DO EXCEL

11. Variveis de Tipo estruturado ou Arrays

Problema: Supondo que uma empresa tem um grupo de vendedores, em nmeros de 20 a quem so pagas comisses nas vendas que ultrapassam 2/3 da mdia das vendas efectuadas pelo grupo. Pretende-se um programa que leia o valor das vendas de cada um dos vendedores e imprima o nmero de referncia de cada vendedor que alcanou e o valor das vendas por ele efectuadas. Algoritmo Comisses l os valores das rendas de cada vendedor ( Venda1, Venda2, ..., Venda20 ); calcular o nvel da comisso ( Nvel ); se Venda1 > Nvel ento imprime 1 e Venda1 se Venda2 > Nvel ento imprime 2 e Venda2 ... se Venda20 > Nvel ento imprime 20 e Venda20 Fim Comisses A resoluo do problema simplifica-se se for considerado em vez de Venda1, Venda2, ..., Venda20 uma nica varivel de tipo estruturado ou Tabela ou Array. Uma varivel de tipo estruturado ou Array caracterizada por ter mais que uma componente; cada componente de uma informao do tipo estruturado uma varivel que pode ser do tipo simples ou estruturado. Por exemplo, uma tabela (Array em Ingls) um conjunto ordenado de variveis todas do mesmo tipo. Para utilizar uma tabela no exemplo anterior, seria como utilizar a noo de ndice vendai em que vendai designa o valor das vendas efectuadas pelo vendedor i.

O esquema do programa ficaria:


Informtica II Cap. III - Excel Visual Basic Pg.

29

VISUAL BASIC DO EXCEL

Algoritmo Comisses

l Vendai ( para i de 1 a 20 ); calcula o nvel da comisso ( Nvel); para i variando de 1 a 20 : - se Vendai > Nvel ento imprime ( i, Vendai );

Fim Comisses Na linguagem Visual Basic, a declarao duma varivel desse tipo feita do seguinte modo: Portugus Decl Nome_de_Varivel (elementos) Como Tipo de dados Teramos, no nosso caso: Decl Venda(1 To 20) Como Moeda Ingls Dim Nome_de_Varivel (elementos) As Tipo de dados Teramos, no nosso caso: Dim Venda(1 To 20) As Currency

Para acedermos ao contedo de um dos elementos do array, bastar indicar o nome da varivel e o respectivo nmero do elemento entre parntisis. Exemplo: Venda(10), acederia ao valor de vendas do 11 vendedor. Ateno! Por defeito o 1 elemento, caso no seja explicitado na instruo de declarao da varivel o Zero (0).

Informtica II Cap. III - Excel Visual Basic

Pg.

30

VISUAL BASIC DO EXCEL

Verso final do programa Portugus Proc Comissoes() Const Vendedores = 20 Decl Venda(1 To 20) Como Moeda Decl Soma, Nvel Como Moeda Incio 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 Nvel = 2/3* Soma / Vendedores nvel de comisso Para i = 1 at Vendedores Se Venda(i) > Nivel Ento CxMsg(Vendedor & i & Venda(i) Fim Se Seguinte i Fim Proc Ingls Sub Comissoes() Const Vendedores = 20 Dim Venda(1 To 20) As Currency Dim Soma, Nivel As Currency Incio 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 nvel de comisso For i = 1 TO Vendedores If Venda(i) > Nivel Then MsgBox(Vendedor & i & Venda(i) End If Next i End Sub

Informtica II Cap. III - Excel Visual Basic

Pg.

31

VISUAL BASIC DO EXCEL

11.1 Alterar o Tamanho de Um Array em Run-Time (Arrays Dinmicos) Uma Tabela ou Array, pode ter tamanho fixo ou varivel, podendo inclusivamente ser redimensionada no decorrer do procedimento, utilizando o statement ReDim. Para que posamos redimensionar um array, faremos: Portugus Decl ArrayDinamico() como tipo de dados .... ReDim ArrayDinamico (X + 1) como tipo de dados Ingls Dim ArrayDinamico() como tipo de dados .... ReDim ArrayDinamico (X + 1) como tipo de dados

Trata-se duma facilidade extremamente interessante, quando no conhecemos aquando da codificao do programa, de quantos elementos um array ir necessitar. Isso permite evitar que criemos arrays desnecessariamente grandes, obrigando a estabelecer tamanhos mximos partida. Obviamente que esta situao permite uma gesto de memria mais eficiente.

Informtica II Cap. III - Excel Visual Basic

Pg.

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, so chamados vectores ou tabelas unidimensionais. H no entanto tabelas com mais que um ndice, no caso de terem dois ndices so chamadas matrizes ou tabelas bidimensionais.
Tabela Unidimensional ou Vector 1 2 3 4 5 6 7 8

x[1]

x[8]

Exemplo: Portugus xi ( i = 1, 2, ..., 8 ) Decl X(1 To 8) Como Inteiro X(5)= 3 Ingls xi ( i = 1, 2, ..., 8 ) Dim X(1 To 8) As Integer X(5)= 3

Tabela Bidimensional ou Matriz j=1 i=1 i=2 i=3 A(3,3) j=2 j=3 j=4 A(1,4)

Exemplo: Portugus aij ( i = 1, 2, 3 ; j= 1, 2, 3, 4 ) Decl A (1 To 3, 1 To 4) Como Cadeia A ( 2, 3 ) = F Ingls aij ( i = 1, 2, 3 ; j= 1, 2, 3, 4 ) Dim A (1 To 3, 1 To 4) As String A ( 2, 3 ) = F

Informtica II Cap. III - Excel Visual Basic

Pg.

33

VISUAL BASIC DO EXCEL

Tabela Tridimensional k

B(3,3,3) k=3 k=2 j=1 k=1 j j=3 i=1 i=2 i=3 B(3,3,1) j=2 i

Exemplo: Portugus 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 Ingls 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

Informtica II Cap. III - Excel Visual Basic

Pg.

34

VISUAL BASIC DO EXCEL

Exemplo: Programa para calcular o produto de duas matrizes quadradas, 3x3, A e B sendo C a matriz resultante. Portugus 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 Clculo 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

Informtica II Cap. III - Excel Visual Basic

Pg.

35

VISUAL BASIC DO EXCEL

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

Informtica II Cap. III - Excel Visual Basic

Pg.

36

VISUAL BASIC DO EXCEL

12. Tipos de Dados Criados pelo Utilizador

Podem combinar-se variveis de tipos diferentes para se criarem tipos de dados prprios. Tipos de dados definidos pelo utilizador so teis, sempre que se pretende criar uma nica varivel que armazene vrios pedaos de informao 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 mdulo Visual Basic. Estes tipos de dados so sempre pblicos. Exemplo: Pretende-se criar uma varivel que permita registar informao sobre um computador. Portugus Declaraes Tipo InfSistema CPU Como variante Memoria Como Longo PlacaGrafica Como Cadeia Custo Como Moeda Data_de_Compra Como Variante Fim Tipo Num determinado mdulo, podem criar-se variveis locais deste tipo, fazendo: Decl MeuSistema Como InfSistema, TeuSistema Como InfSistema Ingls Declaraes Type InfSistema CPU As variant Memoria As Long PlacaGrafica As String Custo As Currency Data_de_Compra As Variant End Type Num determinado mdulo, podem criar-se variveis locais deste tipo, fazendo: Dim MeuSistema As InfSistema, TeuSistema As InfSistema

Informtica II Cap. III - Excel Visual Basic

Pg.

37

VISUAL BASIC DO EXCEL

Para assignar e retornar valores dos elementos destas variveis, indica-se o nome da varivel de tipo e o nome da varivel separadas por ., tal como se acede a propriedades dum objecto. Exemplo: Portugus MeuSistema.CPU = Pentium IV Se MeuSistema.data_de_Compra > #1/1/2002# Ento ..... Fim Se Ingls MeuSistema.CPU = Pentium IV If MeuSistema.data_de_Compra > #1/1/2002# Then ..... End If

Pode tambm assignar-se uma varivel de tipo estruturado a outra, desde que do mesmo tipo definido pelo utilizador. Exemplo: TeuSistema = MeuSistema Uma varivel de tipo definido pelo utilizador, pode conter qualquer tipo de dados em cada elemento.

Informtica II Cap. III - Excel Visual Basic

Pg.

38