1
Vamos considerar os seguintes elementos e estruturas fundamentais que são habitualmente usados em programação: Tipos de Dados Operadores Atribuições Entrada e Saída de Dados Estruturas de Controlo Procedimentos 2
Os dados num programa podem ser utilizados sob a forma de constantes ou de variáveis: Constantes são valores que se mantêm inalterados dentro de um programa; Variáveis são entidades que podem assumir diferentes valores ao longo da execução do programa. Tipos de dados Simples Estruturados Definidos pelo Utilizador 3
Tipos de Dados Simples O VB, tal como a maioria das linguagens de programação de alto nível, tem definidos vários tipos de dados: Boolean - (2 Bytes) para valores lógicos, Verdadeiro ou Falso Integer - (2 Bytes) Inteiro entre 32.768 e 32.767 Long - (4 Bytes) Inteiro entre 2.147.483.648 e 2.147.483.647 Single - (4 Bytes) para Números reais com Precisão Simples. Double - (4 Bytes) para Números reais com Precisão Dupla. Currency (8 Bytes) para quantidades monetárias. Date (8 Bytes) para lidar com datas (entre 1 de Janeiro de 100 e 31 de Dezembro de 9999). String (1 Byte por caracter) Valores alfanuméricos. Object (4 Bytes) para referenciar outros objectos Excel. Variant (16 Bytes + 1 Byte por caracter) pode conter qualquer um dos outros tipos, excepto os definidos pelo utilizador. 4
Variant (16 Bytes + 1 Byte por caracter) pode conter qualquer um dos outros tipos, excepto os definidos pelo utilizador. Bastante Versátil(V) Diminui o controlo sobre a variável(d) Tipo que mais espaço ocupa em memória(d) A utilização do tipo variant deve ficar restrita às situações em que não seja possível utilizar outro tipo de dados. 5
Declaração de Variáveis A associação de um tipo a uma variável é feita aquando da declaração de uma variável. O tipo de uma variável condiciona os dados que ela pode conter. Assim, é necessário ter consciência do tipo de dados com que se deseja que ela venha a lidar. 6
Sintaxe da declaração de variáveis: Dim Dimnomevar1 As Astipovar1, nomevar2 As Astipovar2,,...... Quando uma variável não é explicitamente declarada, o VB assume que se trata de uma variável do tipo Variant. Se declararmos apenas o nome da variável, mas não explicitarmos o seu tipo, o VB considera também que nos estamos a referir a uma variável do tipo Variant 7
Exemplo: Dim x, y AS Integer Dim x AS Variant, y AS Integer Dim x Dim y AS Integer Dim x, y AS Integer Dim x AS Variant Dim y AS Integer 8
Tipos de Dados Estruturados Array Record Este exemplo utiliza a instrução Type para definir um tipo de dado definido pelo utilizador. A instrução Type é utilizada somente a nível de módulo. Se aparecer num módulo classe, deve ser precedida pela palavra chave Private. Type RegistoEmpregado ' Cria o tipo de dados definido pelo utilizador. ID As Integer ' Define os elementos do tipo de dados. Nome As String * 20 Endereco As String * 30 Telefone As Long DataContrato As Date End Type Sub CreateRecord() Dim MeuRegisto As RegistoEmpregado ' declara a variável como do tipo Registo Empregado. MeuRegisto.ID = 12003 Assignar um valor a um elemento do registo. End Sub 9
Declaração de Constantes Sem grande rigor, podemos dizer que em VBA as constantes são variáveis globais às quais é dado um valor inicial não alterável. Em todo o código é sempre usado o nome da constante ( e não o valor em si), pelo que se desejarmos alterar essa configuração, basta alterar o valor dado na declaração da constante. 10
Sintaxe da declaração de Constantes: Const nomecons As Astipocons = valor A sintaxe é semelhante à das varáveis. A diferença, em termos de sintaxe, reside no facto de se usar a palavra-chave Const em vez de Dim e ainda, de ser necessário indicar de imediato o valor que se quer atribuir à constante. 11
Operadores Em VB, dispomos essencialmente de 4 tipos de operadores: aritméticos, relacionais, lógicos e para cadeias de caracteres. Operador Significado Exemplo + - * Adição 2 + 2 = 4 Subtracção 2-2 = 0 Multiplicação 2 * 2 = 4 Operadores Aritméticos São utilizados para levar a cabo cálculos matemáticos / \ Mod Divisão 17 / 5 = 3,4 Parte inteira da divisão Resto da divisão inteira 17 \ 5 = 3 17 Mod 5 = 2 ^ Exponenciação 2 ^ 3 = 8 12
Operadores Relacionais São utilizados para comparar valores Operador Significado < Menor que <= Menor ou igual a > Maior que >= Maior ou igual a = Igual a <> Diferente de De uma expressão envolvendo um operador relacional resulta sempre um valor (True ou False) que atesta a veracidade dessa expressão. 13
Exemplo: 5 < 4 Vale False A interpretação da relação entre valores depende do seu tipo. 14
Operadores Relacionais A relação entre entre valores numéricos baseia-se na na sua sua ordem quando dispostos num num eixo eixo de de valores tal tal como o conhecemos da da matemática. A relação entre entre cadeias de de caracteres (string) baseia-se na na sua sua ordem alfanumérica. Exemplo: -5 < 2 < 4 < 5 1 < 10 < 1006 < 184 < 2 < 30 < bom < bons Para entender melhor a ordenação alfanumérica deve-se observar a tabela ASCII 15
Operadores Lógicos Estes operadores são utilizados na álgebra de Boole, isto é em operações lógicas (operações sobre os valores verdadeiro e falso). Em VB os valores lógicos são True (para verdadeiro) e False (para falso). Operador Not And Or Xor Imp Eqv Significado Negação e ou ou exclusivo Implicação Equivalência 16
Operadores para cadeias de Caracteres A concatenação de duas cadeias de caracteres é a operação que as junta numa única cadeia. Operador Significado Exemplo & Concatenação bom & dia vale bom dia + Concatenação bom + dia vale bom dia Exemplo: 20 + 34 vale 2034 e não 54 Nota: Os dois operadores podem ser utilizados indiferentemente. 17
Precedências dos Operadores Este problema põe-se quando numa expressão existem vários operadores. Exemplo: Sabemos da da matemática que: que: 2+3*4-5é equivalente a 2 + (3*4) 5e 5e não não a(2+3) * 4 --5 Quando quisermos construir uma expressão que envolva diferentes operadores temos de ter em atenção a tabela de precedência dos operadores que se apresenta a seguir. 18
Precedências dos Operadores Tabela de Precedências dos Operadores ^ - (sinal negativo) *, / \ Mod +, - & =, <>, <, >, <=, >=, Like, Is Not And Or Xor Eqv Imp Notas: Os operadores aritméticos têm sempre precedência sobre os operadores relacionais e ambos têm precedência sobre os operadores lógicos. Todos os operadores relacionais têm a mesma precedência entre si. Quando estamos perante operadores com o mesmo nível de precedência eles devem ser considerados na ordem em que se apresentam, lendo da esquerda para a direita. 19
Exemplo: 2 * 4 / 8 / 5 * 7 é equivalente a ( ( ( 2*4 ) / 8 ) / 5 ) * 7 Quando queremos forçar uma determinada ordem na consideração dos operadores de uma expressão, utilizamos parêntesis. 20
Precedências dos Operadores As As operações dentro de de parêntesis devem ser ser sempre avaliadas antes antes de de qualquer outra outra operação. Exemplo: 3 ( 4 +6 / (3 1 )) * 5 Começa por calcular 3 1 (porque é o que está dentro do parêntesis mais interior), de que resulta 2. De seguida Ter-se-á então que calcular 4+6/2 (de novo, é o que está dentro de parêntesis). Daí resulta 7 (note-se que nesta expressão temos de avaliar primeiro a divisão e só depois a soma). Por fim, ficamos com 3-7*5, que resulta em 32. 21
Atribuições De nada serve efectuar uma qualquer operação se o seu resultado não for devidamente guardado numa variável. Para isso temos as atribuições Assim que o valor resultante de uma operação estiver guardado numa variável, ele pode ser utilizado em subsequentes expressões, bastando para tal invocar essa variável. 22
Exemplo: a = 4 + 5 b = 2 * a + 1 O tipo de valor resultante no lado direito da atribuição tem de ser compatível com o tipo da variável a que o valor atribuído (lado esquerdo da atribuição). 23
Entrada/Saída de dados (teclado e ecrã) A maioria dos programas visa produzir dados (saídas) com base em outros dados entretanto fornecidos (entradas). Assim, as técnicas de entrada e saída de dados são primordiais na construção desses programas. Em VBA temos essencialmente duas formas de o fazer: Codificar os procedimentos como funções similares às do próprio Excel, fazendo assim a entrada de dados a partir das folhas de cálculo. Os resultados podem ser observados nas próprias células onde se inscrevem as chamadas às ditas funções. Recorrer a dispositivos vocacionados para a entrada e saída de dados em tempo de execução. Estes dispositivos, que são janelas (ou caixas ), estão já construídos, pelo que tudo o que há a fazer é usá-los convenientemente. 24
Entrada/Saída de dados (teclado e ecrã) Exemplo: Sub preçovenda() Sub PerguntaRepete() Dim str As String str = InputBox("Escreva qulaquer coisa:") MsgBox "Você disse: " & str End Sub Dim PU As Single, PL As Single, IVA As Single Dim L As Single, I As Single, PVP As Single PU = InputBox("introduza o preço unitário") PL = InputBox("introduza a percentagem de lucro") IVA = InputBox("introduza a taxa do IVA") L = PU * PL I = (PU + L) * IVA PVP = PU + L + I MsgBox "Lucro = " & L MsgBox "PVP = " & PVP End Sub 25