Variáveis ​​e constantes em VBA

No VBA, como em qualquer outra linguagem de programação, variáveis ​​e constantes são usadas para armazenar quaisquer valores. Como o nome indica, as variáveis ​​podem mudar, enquanto as constantes armazenam valores fixos.

Por exemplo, uma constante Pi armazena o valor 3,14159265… O número “Pi” não mudará durante a execução do programa, mas ainda é mais conveniente armazenar tal valor como uma constante.

Ao mesmo tempo, podemos usar a variável Taxa_sVAT para armazenar a taxa de IVA sobre os bens adquiridos. Valor da variável Taxa_sVAT pode variar de acordo com o produto adquirido.

Tipos de dados

Todas as variáveis ​​e constantes são de um tipo de dados específico. A tabela abaixo lista os tipos de dados usados ​​no VBA com uma descrição e intervalo de valores possíveis:

Tipo de dados TamanhoDescriçãoFaixa de valores
Byte1 bytesInteiros positivos; frequentemente usado para dados bináriosde 0 para 255
Booleano2 bytesPode ser Verdadeiro ou FalsoVerdadeiro ou falso
Número inteiro2 bytesNúmeros inteiros (sem parte fracionária)de -32 a +768
longo4 bytesInteiros grandes (sem parte fracionária)от -2 147 483 648 до +2 147 483 647
solteiro4 bytesNúmero de ponto flutuante de precisão únicade -3.4e38 a +3.4e38
Double8 bytesNúmero de ponto flutuante de precisão duplade -1.8e308 a +1.8e308
Moeda8 bytesNúmero de ponto flutuante, com um número fixo de casas decimaisот -922 337 203 685 477.5808 до +922 337 203 685 477.5807
Data8 bytesData e hora – Os dados do tipo Data são representados por um número de ponto flutuante. A parte inteira desse número expressa a data e a parte fracionária expressa a hora.de 1º de janeiro de 100 a 31 de dezembro de 9999
objeto4 bytesReferência de objetoQualquer referência de objeto
Tangaestá mudandoConjunto de caracteres. O tipo String pode ser de comprimento fixo ou variável. Mais comumente usado com comprimento variávelComprimento fixo – até aproximadamente 65 caracteres. Comprimento variável – até aproximadamente 500 bilhões de caracteres
Varianteestá mudandoPode conter uma data, um float ou uma cadeia de caracteres. Este tipo é utilizado nos casos em que não se sabe antecipadamente que tipo de dados serão inseridos.Número – Duplo, string – String

Obviamente, usando a tabela acima e escolhendo o tipo de dados correto, você pode usar a memória de forma mais econômica (por exemplo, escolha o tipo de dados Número inteiro em vez disso longo or solteiro em vez disso Double). No entanto, ao usar tipos de dados mais compactos, você precisa ter cuidado para que seu código não tente encaixar valores desproporcionalmente grandes neles.

Declarando Variáveis ​​e Constantes

Nota do tradutor: Falando sobre variáveis ​​em VBA, vale ressaltar mais um ponto muito importante. Se declararmos uma variável, mas não atribuirmos nenhum valor a ela, ela será inicializada com um valor padrão:

• strings de texto são inicializadas com strings vazias;

• números — valor 0;

• variáveis ​​de tipo Booleano — Falso;

• datas - 30 de dezembro de 1899.

Antes que uma variável ou constante possa ser usada, ela deve ser declarada. Para fazer isso, adicione a seguinte linha de código simples à macro:

Dim Имя_Переменной As Тип_Данных

Na linha de código acima Nome variável é o nome da variável que será usada no código, e Tipo de dados é um dos tipos de dados da tabela fornecida um pouco anteriormente neste artigo. Por exemplo:

Dim sVAT_Rate As Single Dim i As Integer

Constantes são declaradas de forma semelhante, mas ao declarar constantes, seu valor deve ser indicado imediatamente. Por exemplo, assim:

Const iMaxCount = 5000 Const iMaxScore = 100

Não é necessário declarar variáveis ​​no Excel. Por padrão, todas as variáveis ​​inseridas mas não declaradas no Excel terão o tipo Variante e poderá aceitar valores numéricos e de texto.

Assim, o programador pode utilizar a nova variável a qualquer momento (mesmo que não tenha sido declarada), e o Excel irá tratá-la como uma variável do tipo Variante. No entanto, existem várias razões pelas quais isso não deve ser feito:

  1. Uso de memória e velocidade computacional. Se você não declarar uma variável com uma indicação do tipo de dados, por padrão ela será definida para o tipo Variante. Esse tipo de dados usa mais memória do que outros tipos de dados. Alguns bytes extras por variável podem não parecer muito, mas na prática, os programas podem ter milhares de variáveis ​​(especialmente ao trabalhar com arrays). Portanto, a memória extra usada por variáveis ​​como Variante, em comparação com variáveis ​​do tipo Número inteiro or solteiro, pode somar uma quantidade significativa. Além disso, as operações com variáveis ​​do tipo Variante são executados muito mais lentamente do que com variáveis ​​de outros tipos, respectivamente, mil variáveis ​​extras do tipo Variante pode desacelerar significativamente os cálculos.
  2. Prevenção de erros de digitação em nomes de variáveis. Se todas as variáveis ​​forem declaradas, a instrução VBA poderá ser usada - Opção explícita (falaremos sobre isso mais tarde) para identificar todas as variáveis ​​não declaradas. Isso elimina a aparência de um erro no programa como resultado de um nome de variável escrito incorretamente. Por exemplo, usando uma variável chamada Taxa_sVAT, você pode cometer um erro de digitação e, atribuindo um valor a esta variável, escrever: “VATRate = 0,175”. Espera-se que a partir de agora, a variável Taxa_sVAT deve conter o valor 0,175 – mas é claro que não. Se o modo de declaração obrigatória de todas as variáveis ​​usadas estiver habilitado, o compilador VBA indicará imediatamente um erro, pois não encontrará a variável Taxa do IVA entre os anunciados.
  3. Destacando valores que não correspondem ao tipo declarado de uma variável. Se você declarar uma variável de um determinado tipo e tentar atribuir dados de um tipo diferente a ela, receberá um erro que, se não for corrigido, pode causar o travamento do programa. À primeira vista, isso pode parecer um bom motivo para não declarar variáveis, mas, na verdade, do que antes, acontece que uma das variáveis ​​recebeu os dados errados que deveria receber – tanto melhor! Caso contrário, se o programa continuar em execução, os resultados poderão ser incorretos e inesperados, e será muito mais difícil encontrar a causa dos erros. Também é possível que a macro seja executada “com sucesso”. Como resultado, o erro passará despercebido e o trabalho continuará com dados incorretos!

A este respeito, é desejável detectar um tipo de dados incorreto e corrigir tais erros no código o mais cedo possível. Por esses motivos, é recomendável declarar todas as variáveis ​​ao escrever uma macro VBA.

Opção explícita

operador Opção explícita faz com que todas as variáveis ​​que serão usadas no código VBA sejam declaradas e sinaliza todas as variáveis ​​não declaradas como erros durante a compilação (antes do início da execução do código). Aplicar este operador não é difícil – basta escrever esta linha no topo do arquivo VBA:

Option Explicit

Se você quiser sempre inserir Opção explícita no topo de cada novo módulo VBA criado, isso pode ser feito automaticamente. Para fazer isso, você precisa habilitar a opção Exigir declaração de variável nas configurações do editor VBA.

Isso é feito assim:

  • No menu Editor do Visual Basic, clique em ferramentas > Opções
  • Na caixa de diálogo exibida, abra a guia editor
  • Verifica a caixa Exigir declaração de variável e imprensa OK

Quando habilitado, a string Opção explícita será inserido automaticamente no início de cada novo módulo criado.

Escopo de Variáveis ​​e Constantes

Cada variável ou constante declarada tem seu próprio escopo limitado, ou seja, uma parte limitada do programa na qual esta variável existe. O escopo depende de onde foi feita a declaração da variável ou constante. Tomemos, por exemplo, a variável Taxa_sVAT, que é usado na função Custo total. A tabela a seguir discute duas opções para escopo de variável Taxa_sVATdeclarado em duas posições diferentes no módulo:

Opção Explicit Dim sVAT_Rate As Single Function Total_Cost() As Double ... End Function
Se a variável Taxa_sVAT declarado no início do módulo, então o escopo desta variável será o módulo inteiro (ou seja, a variável Taxa_sVAT será reconhecido por todos os procedimentos deste módulo).

Portanto, se na função Custo total variável Taxa_sVAT será atribuído algum valor, então a próxima função executada dentro do mesmo módulo usará a variável Taxa_sVAT com o mesmo significado.

No entanto, se alguma função localizada em outro módulo for chamada, então para ela a variável Taxa_sVAT não será conhecido.

Opção Função Explícita Total_Cost() As Double Dim sVAT_Rate As Single ... Função Final
Se a variável Taxa_sVAT declarado no início da função Custo total, então seu escopo será limitado apenas a esta função (ou seja, dentro da função Custo total, você pode usar a variável Taxa_sVAT, mas não fora).

Ao tentar usar Taxa_sVAT em outro procedimento, o compilador VBA reportará um erro porque esta variável não foi declarada fora da função Custo total (desde que o operador seja usado Opção explícita).

No exemplo mostrado acima, a variável é declarada no nível do módulo com a palavra-chave Escurecer. No entanto, pode ser necessário que as variáveis ​​declaradas possam ser usadas em outros módulos. Nesses casos, para declarar uma variável em vez de uma palavra-chave Escurecer palavra-chave deve ser usada Público.

A propósito, para declarar uma variável no nível do módulo, em vez da palavra-chave Escurecer palavra-chave pode ser usada Privado, que indica que essa variável é destinada ao uso apenas no módulo atual.

Você também pode usar palavras-chave para declarar constantes. Público и Privado, mas não em vez da palavra-chave const, junto com ele.

Os exemplos a seguir mostram o uso de palavras-chave Público и Privado aplicado a variáveis ​​e constantes.

Opção Explicit Public sVAT_Rate As Single Public Const iMax_Count = 5000 ...    
Neste exemplo, a palavra-chave Público usado para declarar uma variável Taxa_sVAT e constantes iMax_Count. O escopo dos elementos declarados desta forma será todo o projeto atual.

Isto significa que Taxa_sVAT и iMax_Count estará disponível em qualquer módulo do projeto.

Opção Explicit Private sVAT_Rate As Single Private Const iMax_Count = 5000 ...    
Neste exemplo, para declarar uma variável Taxa_sVAT e constantes iMax_Count palavra-chave usada Privado. O escopo desses elementos é o módulo atual.

Isto significa que Taxa_sVAT и iMax_Count estará disponível em todos os procedimentos do módulo atual, mas não estará disponível para procedimentos em outros módulos.

Deixe um comentário