segunda-feira, 25 de agosto de 2014

Manuseamento com Variáveis

O que são variáveis?

As variáveis constituem repositórios temporários de dados, podendo ser utilizadas para diversos fins.



Assignação de valores a variáveis:


 

Quando se pretende atribuir valores a variáveis dever-se-á indicar o nome da variável, o operador "=" e o valor que se pretende que a variável armazene.

 

<Nome_Variável> = <Valor>

 

Pela observação do procedimento Adição - Figura 22- podemos verificar que as variáveis Parcela_1 e Parcela_2 armazenam os valores introduzidos pelo utilizador através das InputBox (Ver capítulo "InputBox e MsgBox"). Também à variável Total vai ser atribuído o valor resultante da adição das duas parcelas - Total = Parcela_1 + Parcela_2.

 

 

Utilização de variáveis como se fossem valores:


 

O nome da variável representa o conteúdo da mesma, i.e., sempre que mencionar o nome da variável é o seu conteúdo que será considerado.

 

No exemplo da figura 22, pode-se constatar que na expressão:

 

       Total = Parcela_1 + Parcela_2

 

Parcela_1 representa o primeiro valor introduzido e Parcela_2 representa o segundo valor, não se trata de adicionar o nome de duas variáveis, mas adicionar os conteúdos que elas armazenam.

 

Tipos de variáveis


 

O tipo de variável está associado ao género de informação que esta tem hipótese de armazenar

 

Boolean – 2 bytes – Permite armazenar valores Boolenaos – True ou False

 

Byte – 1 Byte – permite armazenar números sem sinal entre 0 e 255


Currency  - 8 bytes – permite armazenar moeda

 

Date – 8 Bytes – permite armazenar datas

 

Double – 8 bytes – permite armazenar um real desde -1.79769313486232E308 até -4.94065645841247E-324 para valores negativos, e desde 1.79769313486232E308 até 4.94065645841247E-324 para valores positivos.

 

Single – 4 bytes – permite armazenar um real desde -3.402823E38 até

-1.4011298E-45, para valores negativos e desde 3.402823E38 até 1.4011298E-45, para valores positivos

 

Integer – 2 bytes - permite armazenar números inteiros entre -32.768 e 32767

 

Long – 4 bytes – permite armazenar números inteiros entre -2 147 483 648 e

   2 147 483 648

 

Object – 4 bytes – utilizado para fazer referência a um objecto do Excel

 

String – 1 byte por caractere – permite armazenar conjuntos de caracteres

 

Variant – 16 bytes - permite armazenar qualquer tipo de dados

 

User-Defined – permite armazenar valores de tipos diferentes

 

 

Declaração de Variáveis


 

Dim I_Numero As Integer

 

Onde:

 

Dim – Palavra chave que indica uma declaração de variáveis (abreviatura de dimensão)

I_Numero - nome da variável a utilizar

As – palavra chave utilizada para separar o nome da variável do tipo de dados

Integer – tipo de dados atribuído à variável

 

 

 

É possível na mesma declaração de variáveis declarar variáveis de diversos tipos:

 

Dim var1 As Integer, var2 As Date, var3 As Double

 

 

 

Para declarar diversas variáveis do mesmo tipo:

 

Dim var_1, var_2, var_3 As Currency

 


Variáveis – Vantagens da utilização


¨      Simplificam a codificação, principalmente quando se necessita de utilizar um valor especifico inúmeras vezes

¨      Com variáveis o código é mais rápido

 

 

 

Variáveis do Tipo Objecto


Uma variável objecto representa uma referência a um objecto. Uma variável de extrema importância que facilita a codificação e melhora a performance da subrotina.

 

 

Declaração da Variável Objecto


 

            Dim <Var_Objecto> As Object

 

 

 

Atribuição de uma variável Objecto


 

            Set <Var_Objecto> = <Objecto>

 

 

 

Onde:

                       

Set – palavra chave que indica a assignação de uma variável objecto

                        <Var_Objecto> - Variável Objecto

                        = - Operador de assignação

<Objecto> - Objecto a ser atribuído à variável

 

 

Utilização Genérica da Variável Objecto


 

A utilização genérica do tipo Objecto serve para suportar qualquer tipo de objecto Excel (WorkBook,WorkSheet,Range,…)

            Exemplo:

 

                        Dim Range_1 as Object

                        Range_1 = Worksheet(1).Range(“A1”)

                        Range_1.Value = 10

 

 

 

Utilização Especifica da Variável Objecto


 

Utiliza-se o tipo exacto do objecto que se pretende atribuir à variável. Esse tipo especifico de objectos coincide com o nome dos objectos em EXCEL.

 

            Dim Range_1 As Range

                        Dim WB_1 As Workbook

                        Dim WS_1 As WorkSheet

Dim XL As Aplicativo

 

 

            Exemplo:

 

                        Dim Range_1 as Range

                        Range_1 = Worksheet(1).Range(“A1”)

                        Range_1.Value = 10

 

Contudo estas declarações também podem ser feitas da seguinte forma genérica:

 

                        Dim Range_1 As Object

                        Dim WB_1 As Object

                        Dim WS_1 As Object

                        Dim XL As Object

 

 

 

Então qual o interesse de definir as variáveis de forma especifica se o podemos fazer de forma genérica?

 

Por uma questão de performance, se utilizar um objecto genérico, o VBA antes de executar qualquer função com o objecto tem que primeiramente o identificar (perdendo tempo) – em subrotinas simples essa diferença não é substancial mas quando se trata de grandes subrotinas já se denotam diferenças significativas.

 

 

 

Variáveis – Declaração Opcional e o Tipo Variant


 

A declaração de variáveis é opcional, se as variáveis não forem declaradas o VBA faz a sua declaração por defeito. Assim sempre que a instrução do Dim é omitida para uma variável, essa assume o tipo Variant.

 

 

Os Prós e Contras da Utilização do tipo Variants


 

Prós


·         Diminui o número de linhas de código

·         Não é necessário estar preocupado se a variável está ou não declarada porque o VBA automaticamente o faz

Contras


 

·         Aumenta o tempo de execução – o VBA primeiro precisa de reconhecer o tipo de dados com os quais está a trabalhar.

·         Este tipo de dados consome mais memória (uma vez que tem que alocar espaço para qualquer tipo de dados que lhe seja atribuído) – 16 bytes mais um byte por caractere se for String => problemas de performance para subrotinas grandes.

·         Não é possível saber o tipo de dados que uma determinada variável contém – dificultando a detecção de erros.

 

 

Variáveis – Declaração Forçada


 

 

Para que o VBA detecte um erro sempre que uma variável não seja declarada deverá fazer:

 

·         Tools/Options

·         Editor Tab

·         Activar Require Variable Declaration

 

Ou então, escrever no início de cada módulo Option Explicit

 

Neste caso sempre que seja detectada uma variável que ainda não foi declarada dá uma mensagem de erro - Variable Not Defined

 

 

 

Variáveis – tipos definidos pelo utilizador - estruturas


 

Definição do Tipo


 

A primeira fase é constituída pela definição do tipo:

Type Dados_Pessoais

 

            Nome As String

            Idade As Integer

            DataNascimento As Date

            BI As Long


 

Criou-se um tipo de dados que representa uma estrutura com dados de diferentes tipos. Esta definição deverá ocorrer no início do módulo VBA.

 

 

Onde:

 

Type
Palavra-Chave que indica a definição de um tipo de dados criado pelo utilizador.
 
Dados_Pessoais
Nome atribuído ao tipo de dados.
 
Nome As String
Primeiro elemento da estrutura de dados definida.
 
Idade As Integer
Segundo elemento da estrutura de dados definida.
 
DataNascimento As Date
Terceiro elemento da estrutura de dados definida.
 
BI As Long
Quarto elemento da estrutura de dados definida.
 
End Type
Palavra-Chave que  indica o fim da definição da estrutura de dados.

 

 

Utilização das Estruturas de Dados


 

Como utilizar as estruturas de dados:

 

Sub Tipos_definidos_Utilizador()

 

Dim Pessoa As Dados_Pessoais

 

Pessoa.Nome =  “Francisco”

Pessoa.DataNascimento = #8/7/73#

Pessoa.Idade = WorksheetFunction.Year(Date)_

 – WorksheetFunction.Year(Pessoa.DataNascimento)

Pessoa.BI = 103582915

 

MsgBox [1]Pessoa.Nome & Chr(13)  & “, Idade “ & Pessoa.Idade &  Chr(13)  & _

“, Data de Nascimento ” & Pessoa.DataNascimento & Chr(13)  & _

“, com o BI número “_ & Pessoa.BI

 

End Sub


 

Nenhum comentário:

Postar um comentário