Tempo de leitura: 10 minutos
Constantes e Variáveis excel vba Aplicado no Excel VBA, como em qualquer linguagem de programação variáveis e constantes são nomes que representam valores. Conforme sugerido pelos nomes, os valores das Variáveis podem mudar, enquanto Constantes geralmente têm valores fixos.
Por exemplo, você pode usar a constante “Pi” para armazenar o valor 3.14159265 … O valor de “Pi” não se alterará ao longo do curso do seu programa, mas é útil armazenar esse valor em constante para facilidade de uso .
Além disso, podemos usar uma variável chamada “wTaxa”, para armazenar a taxa de As Taxas de Impostos a ser paga em bens adquiridos. O valor de ‘wTaxa’ pode variar, dependendo do tipo de mercadoria.
Tipos de dados
Todas as variáveis e constantes têm um tipo de dados. A tabela a seguir mostra os tipos de dados da VBA, juntamente com uma descrição de cada tipo e o intervalo de valores possíveis.
Tipo de dados | Tamanho na memória | Descrição | Faixa de valores |
Byte | 1 byte | Representa um número não assinado (não negativo) – freqüentemente usado para dados binários | 0 a 255 |
Long | 2 bytes | Um valor verdadeiro ou falso simples | Verdadeiro ou Falso |
Integer | 2 bytes | Inteiro (sem decimais) | -32.768 para +32.767 |
Longo | 4 bytes | Inteiro longo (sem decimais) | -2,147,483,648 a +2,147,483,647 |
Single | 4 bytes | Número único de ponto flutuante de precisão | -3,4e38 a + 3,4e38 |
Double | 8 bytes | Número de ponto flutuante de precisão dupla | -1,8e308 a + 1.8e308 |
CurrencyMoeda | 8 bytes | Um número de ponto flutuante com um número fixo de casas decimais | -922, 337, 203, 638, 477, 5808 a +922 337 203 635 477.5807 |
Date | 8 bytes | Data e hora – O tipo de data é representado internamente por um número de ponto flutuante. A parte inteira do número representa a data e a porção decimal representa o tempo. | 1 de janeiro de 100 a 31 de dezembro de 9999 |
Objeto | 4 bytes | Uma referência a um objeto | Qualquer referência de objeto |
String | varias | Possui uma série de personagens. O tipo String pode ser definido para ter um comprimento fixo ou variável, embora seja geralmente definido para ter um comprimento variável | Corrigido – Até 65.500 caracteres Variável – Até aprox. 2 bilhões de caracteres |
Variant | varias | Pode conter datas, números de ponto flutuante ou cadeias de caracteres, e, portanto, deve ser usado quando você não tem certeza do tipo de dados a serem esperados. | Número – o mesmo que a Cadeia de Tipo Duplo – o mesmo que o Tipo de Cadeia |
A partir da tabela acima, é claro que você pode economizar na memória usando tipos de dados específicos (por exemplo, números inteiros em vez de Longs ou Singles em vez de dobros). No entanto, se você está planejando usar os tipos de dados “menores”, você deve ter certeza de que seu código não encontrará valores maiores do que podem ser manipulados pelo tipo de dados escolhido.
Declarando Variáveis e Constantes
Antes de usar uma variável ou constante, você pode declarar isso. Isso é feito adicionando uma linha de código simples à sua macro, da seguinte maneira.
Para declarar uma variável:
Dim Variable_Name As Data_Type
Observe que, na linha de código acima, o nome da variável deve ser substituído pelo nome da variável real e Data_Type deve ser substituído por um dos tipos de dados listados acima. Por exemplo:
Dim wTaxa como Single
Dim i As Integer
As constantes são declaradas de forma semelhante, exceto uma constante sempre deve ser atribuído um valor quando é declarado. Exemplos da declaração de constantes no VBA são:
Const wMaxCount = 5000
Const wMaxPontuacao = 100
Razões para declarar variáveis
O Excel não o obriga a declarar variáveis. Por padrão, todas as variáveis no Excel terão o tipo Variant e podem ser atribuídas um número ou texto.
Portanto, em qualquer ponto durante o seu programa, você pode usar qualquer nome de variável (mesmo que não tenha sido declarado), e o Excel atribuirá o tipo de Variant a ele. No entanto, não é boa prática de programação não declarar variáveis pelas seguintes razões:
- Memória e velocidade de cálculo:se você não declarar uma variável para ter um tipo de dados, ele terá, por padrão, o tipo Variant. Isso ocupa mais memória do que muitos outros tipos de dados. Embora alguns bytes extras por variável não parecem ser muita memória, não é incomum para os programadores terem milhares de variáveis em seus programas (especialmente quando você começa a usar arrays). Portanto, a memória adicional usada para armazenar Variantes em vez de Inteiros ou Singles, pode somar significativamente. Os tipos de dados variantes também demoram mais tempo para processar do que alguns outros tipos de dados, portanto, se você tiver milhares de tipos de dados Variant desnecessários, isso pode diminuir seus cálculos.
- Prevenção de erros de “Type”:se você sempre declarar suas variáveis, então você pode usar a opção VBA Explicit (veja abaixo) para forçá- lo a declarar variáveis. Isso impedirá que você insira erros em seu código acidentalmente digitando um nome de variável incorretamente. Por exemplo, você pode usar uma variável chamada “wTaxa” e, ao atribuir um valor a esta variável, você pode acidentalmente digitar “wTaxa = 0.175”. A partir deste ponto, você espera que sua variável “wTAxa” tenha o valor 0.175, mas é claro que não. No entanto, se você estivesse usando a opção VBA Explicit para forçá-lo a declarar todas as variáveis antes de usá-las, esse erro seria destacado pelo compilador VBA, como a variável “wTaxa”
- Destaque de valores de dados inesperados:se você declarar uma variável para ter um tipo de dados específico e tentar atribuir o tipo de dados errado, isso gerará um erro no seu programa que, se não for tratado no seu código, pode causar o seu programa para falhar. Embora isso possa parecer inicialmente um bom motivo para não declarar variáveis, é realmente útil saber o quanto antes se a sua variável receber um tipo de dados inesperado. Caso contrário, se o programa continuar a ser executado, você poderá acabar com resultados incorretos ou inesperados mais tarde, quando é provável que seja muito mais difícil detectar as causas dos erros. Além disso, é possível que a macro possa ser concluída com resultados incorretos e você pode não notar o erro em tudo – e continuar a trabalhar com dados incorretos! Portanto, é preferível detectar o tipo de dados inesperado em um estágio inicial e adicionar código para lidar com isso de forma adequada.
Devido aos motivos listados acima, recomenda-se que você sempre declare todas as variáveis durante a programação no VBA e use a opção Explicit (veja abaixo) para garantir que todas as variáveis no código sejam declaradas.
Opção explícita – Option Explicit
A opção ‘Explicit’ obriga você a declarar todas as variáveis que você usa em seu código VBA, destacando quaisquer variáveis não declaradas como erros durante a compilação (antes do código ser executado). Para usar esta opção, basta digitar a linha
Opção explícita – Option Explicit
no topo do seu arquivo VBA.
Se você quiser sempre incluir a opção Explicit na parte superior de cada novo módulo VBA que você abre, isso pode ser feito automaticamente através da opção ‘Exigir declaração de variável’ do seu editor VBA.
Para ativar isso:
- No Editor do Visual Basic, selecione Tools → Options … ;
- Certifique-se de que a guia Editoresteja selecionada;
- Marque a caixa ao lado da opção Exigir declaração de variávele clique em OK.
Uma vez que a opção ‘Exigir declaração de variável’ estiver selecionada, a opção Explicit será automaticamente inserida na parte superior de todos os novos módulos no Editor VBA.
Escopo de variáveis e constantes
Cada vez que você declara uma variável ou uma constante, isso tem apenas um Escopo limitado (ou seja, uma parte limitada do programa sobre a qual a variável existe). Isso depende da posição da sua declaração.
Por exemplo, imagine que você está usando a variável “wTaxa” dentro da função, “Total_Custo”. A tabela a seguir discute o escopo de “wTaxa” quando é declarado em 2 locais diferentes dentro do módulo:
Opção Explicit Dim wTaxa As SingleFunção Total_Custo() As Double. . .End Function |
Se você declarar “wTaxa”, na parte superior do arquivo do módulo, o escopo dessa variável é todo o módulo (ou seja, “wTaxa” será reconhecido em todos os procedimentos dentro do módulo).
Portanto, se você atribuir um valor a “wTaxa” na função Total_Custo e depois entrar em outra função no módulo atual, o valor atribuído de “wTaxa” será lembrado. No entanto, se você entrar em uma função que reside em um módulo diferente e tentar usar a variável “wTaxa”, a variável não será reconhecida. |
Opção explícita
Função Total_Custo () As Double Dim wTaxa as Single As Single End Function |
Se você declarar “wTaxa”, no início da função Total_Custo, o escopo dessa variável será a totalidade dessa função, (ou seja, “wTaxa” será reconhecido em toda a função Total_Custo, mas não fora desta função).
Portanto, se você tentar usar “wCusto” em qualquer outro procedimento, o compilador VBA aumentará um erro, pois a variável não foi declarada fora da função Total_Custo (e Option Explicit está em uso). |
No exemplo acima, a variável do nível do módulo foi declarada usando a palavra-chave ‘Dim’. No entanto, é possível que você queira declarar variáveis que podem ser compartilhadas com outros módulos. Isso pode ser especificado usando a palavra-chave Public na declaração, em vez de ‘Dim’.
Observe que, para uma variável de nível de módulo, a palavra-chave ‘Dim’ também pode ser substituída pela palavra-chave Privada para indicar que o escopo da variável é limitado ao módulo atual.
Constantes também podem usar as palavras-chave “Público” e “Privado”, mas neste caso, a palavra-chave “Público” ou “Privado” é usada além da palavra-chave ‘Const’ (não em vez de).
Os exemplos a seguir mostram as palavras-chave públicas e privadas aplicadas a variáveis e constantes:
Opção Explicit Public wCusto As Single Public Const wMax = 5000. . . |
Este exemplo mostra a palavra-chave “pública” utilizada para declarar a variável “sVAT_Rate” e a constante “iMax_Count”. O escopo dessas duas declarações é o conjunto do projeto atual.
Portanto, “wTAxa” e “wMax_Contador” podem ser acessados a partir de qualquer procedimento em qualquer módulo do projeto. |
Opção Explicit Private wTaxa Como Single Private Const wMaxContador = 5000. . . |
Este exemplo mostra a palavra-chave ‘Privada’ usada para declarar a variável “wTaxa” e a constante “wMaxContador”. O escopo dessas duas declarações é o módulo atual.
Portanto, “wTaxa” e “wMax_Contador” podem ser acessados a partir de qualquer procedimento no módulo atual, mas não podem ser acessados a partir de procedimentos que residem em diferentes módulos. |