Compreendendo os tipos de dados do Excel VBA (variáveis ​​e constantes)

No Excel VBA, muitas vezes seria necessário usar variáveis ​​e constantes.

Ao trabalhar com VBA, uma variável é um local na memória do seu computador onde você pode armazenar dados. O tipo de dados que você pode armazenar em uma variável depende do tipo de dados da variável.

Por exemplo, se você deseja armazenar inteiros em uma variável, seu tipo de dados seria ‘Inteiro’ e se você deseja armazenar texto, seu tipo de dados seria ‘String’.

Mais sobre os tipos de dados posteriormente neste tutorial.

Enquanto o valor de uma variável muda quando o código está em andamento, uma constante mantém um valor que nunca muda. Como uma boa prática de codificação, você deve definir o tipo de dados de ambos - variável e constante.

Por que usar variáveis ​​no VBA?

Ao codificar em VBA, você precisará de variáveis ​​que possa usar para conter um valor.

A vantagem de usar uma variável é que você pode alterar o valor da variável no código e continuar a usá-la no código.

Por exemplo, abaixo está um código que adiciona os primeiros 10 números positivos e, em seguida, exibe o resultado em uma caixa de mensagem:

Sub AddFirstTenNumbers () Dim Var As Integer Dim i As Integer Dim k as Integer For i = 1 To 10 k = k + i Next i MsgBox k End Sub

Existem três variáveis ​​no código acima - Var, eu, e k.

O código acima usa um loop For Next em que todas essas três variáveis ​​são alteradas à medida que os loops são concluídos.

A utilidade de uma variável reside no fato de que ela pode ser alterada enquanto seu código está em andamento.

Abaixo estão algumas regras a serem lembradas ao nomear as variáveis ​​no VBA:

  1. Você pode usar letras, números e pontuações, mas o primeiro número deve ser um alfabeto.
  2. Você não pode usar espaço ou ponto no nome da variável. No entanto, você pode usar um caractere de sublinhado para tornar os nomes das variáveis ​​mais legíveis (como Interest_Rate)
  3. Você não pode usar caracteres especiais (#, $,%, &, ou!) Em nomes de variáveis
  4. O VBA não faz distinção entre o caso no nome da variável. Portanto, ‘InterestRate’ e ‘interestrate’ são iguais para o VBA. Você pode usar maiúsculas e minúsculas para tornar as variáveis ​​mais legíveis.
  5. O VBA tem alguns nomes reservados que você pode usar para um nome de variável. Por exemplo, você não pode usar a palavra ‘Next’ como um nome de variável, pois é um nome reservado para o loop For Next.
  6. O nome da sua variável pode ter até 254 caracteres.

Tipo de dados das variáveis

Para fazer o melhor uso das variáveis, é uma boa prática especificar o tipo de dados da variável.

O tipo de dados que você atribui a uma variável depende do tipo de dados que você deseja que essa variável contenha.

Abaixo está uma tabela que mostra todos os tipos de dados disponíveis que você pode usar no Excel VBA:

Tipo de dados Bytes usados Faixa de valores
Byte 1 byte 0 a 255
boleano 2 bytes Verdadeiro ou falso
Inteiro 2 bytes -32.768 a 32.767
Longo (inteiro longo) 4 bytes -2.147.483.648 a 2.147.483.647
solteiro 4 bytes -3,402823E38 a -1,401298E-45 para valores negativos; 1.401298E-45 a 3.402823E38 para valores positivos
Dobro 8 bytes -1,79769313486231E308 a-4.94065645841247E-324 para valores negativos; 4.94065645841247E-324 a 1.79769313486232E308 para valores positivos
Moeda 8 bytes -922.337.203.685.477.5808 a 922.337.203.685.477.5807
Decimal 14 bytes +/- 79.228.162.514.264.337.593.543.950.335 sem ponto decimal; +/- 7,9228162514264337593543950335 com 28 casas à direita do decimal
Encontro: Data 8 bytes 1º de janeiro de 100 a 31 de dezembro de 9999
Objeto 4 bytes Qualquer referência de objeto
String (comprimento variável) 10 bytes + comprimento da string 0 a aproximadamente 2 bilhões
String (comprimento fixo) Comprimento da corda 1 a aproximadamente 65.400
Variante (com números) 16 bytes Qualquer valor numérico até o intervalo de um Double
Variante (com caracteres) 22 bytes + comprimento da string Mesmo intervalo que para String de comprimento variável
Usuário definido Varia O intervalo de cada elemento é igual ao intervalo de seu tipo de dados.

Quando você especifica um tipo de dados para uma variável em seu código, ele informa ao VBA como armazenar essa variável e quanto espaço deve ser alocado para ela.

Por exemplo, se você precisar usar uma variável destinada a conter o número do mês, poderá usar o tipo de dados BYTE (que pode acomodar valores de 0 a 255). Como o número do mês não vai ser superior a 12, isso funcionará bem e também reservará menos memória para essa variável.

Pelo contrário, se você precisa de uma variável para armazenar os números das linhas no Excel, você precisa usar um tipo de dados que pode acomodar um número até 1048756. Portanto, é melhor usar o tipo de dados Longo.

Declarando Tipos de Dados Variáveis

Como uma boa prática de codificação, você deve declarar o tipo de dados das variáveis ​​(ou constantes) ao escrever o código. Isso garante que o VBA aloque apenas a memória especificada para a variável e isso pode tornar o seu código executado mais rápido.

Abaixo está um exemplo em que declarei diferentes tipos de dados para diferentes variáveis:

Sub DeclaringVariables () Dim X As Integer Dim Email As String Dim FirstName As String Dim RowCount As Long Dim TodayDate As Date End Sub

Para declarar um tipo de dados variável, você precisa usar a instrução DIM (que é a abreviação de Dimension).

Em 'Dim X como inteiro‘, Declarei a variável X como tipo de dados Integer.

Agora, quando eu o uso em meu código, o VBA sabe que o X pode conter apenas tipos de dados inteiros.

Se eu tentar atribuir um valor a ele que não seja um número inteiro, irei obter um erro (conforme mostrado abaixo):

Observação: você também pode optar por não declarar o tipo de dados; nesse caso, o VBA considera automaticamente a variável do tipo de dados variante. Um tipo de dados variante pode acomodar qualquer tipo de dados. Embora possa parecer conveniente, não é uma prática recomendada usar o tipo de dados variante. Ele tende a ocupar mais memória e pode tornar o código do VBA mais lento.

Tornando Obrigatória a Declaração de Variável (Opção Explícita)

Embora você possa codificar sem nunca declarar variáveis, é uma boa prática fazer isso.

Além de economizar memória e tornar seu código mais eficiente, declarar variáveis ​​tem outro grande benefício - ajuda a interceptar erros causados ​​por nomes de variáveis ​​com erros ortográficos.

Para ter certeza de que você será forçado a declarar variáveis, adicione a seguinte linha no topo do seu módulo.

Opção Explícita

Ao adicionar ‘Option Explicit’, você deverá declarar todas as variáveis ​​antes de executar o código. Se houver alguma variável que não foi declarada, o VBA mostrará um erro.

Há um grande benefício em usar Option Explicit.

Às vezes, você pode acabar cometendo um erro de digitação e inserir um nome de variável incorreto.

Normalmente, não há como o VBA saber se é um erro ou se é intencional. No entanto, quando você usa ‘Option Explicit’, o VBA verá o nome da variável com erros ortográficos como uma nova variável que não foi declarada e mostrará um erro. Isso o ajudará a identificar esses nomes de variáveis ​​com erros ortográficos, que podem ser muito difíceis de detectar em um código longo.

Abaixo está um exemplo em que usar ‘Option Explicit’ identifica o erro (que não poderia ter sido interceptado se eu não tivesse usado ‘Option Explicit’)

Sub CommissionCalc () Dim CommissionRate As Double If Range ("A1"). Value> 10000 Then CommissionRate = 0,1 Else CommissionRtae = 0,05 End If MsgBox "Total Commission:" & Range ("A1"). Value * CommissionRate End Sub

Observe que escrevi incorretamente a palavra ‘CommissionRate’ uma vez neste código.

Se eu não usar Option Explicit, este código será executado e me dará o valor total da comissão incorreto (no caso do valor na célula A1 ser menor que 10.000).

Mas se eu usar Option Explicit na parte superior do módulo, ele não me deixará executar este código antes de corrigir a palavra incorreta ou declará-la como outra variável. Ele mostrará um erro conforme mostrado abaixo:

Embora você possa inserir a linha ‘Option Explicit’ sempre que codificar, aqui estão as etapas para fazê-la aparecer por padrão:

  1. Na barra de ferramentas do Editor VB, clique em Ferramentas.
  2. Clique em Opções.
  3. Na caixa de diálogo Opções, clique na guia Editor.
  4. Marque a opção - “Exigir Declaração de Variável”.
  5. Clique OK.

Depois de habilitar esta opção, sempre que você abrir um novo módulo, o VBA adicionará automaticamente a linha ‘Opção Explícita’ a ele.

Nota: Esta opção só afetará qualquer módulo que você criar depois que esta opção for ativada. Todos os módulos existentes não são afetados.

Escopo das Variáveis

Até agora, vimos como declarar uma variável e atribuir tipos de dados a ela.

Nesta seção, irei cobrir o escopo das variáveis ​​e como você pode declarar uma variável para ser usada apenas em uma sub-rotina, em um módulo inteiro ou em todos os módulos.

O escopo de uma variável determina onde a variável pode ser usada no VBA,

Existem três maneiras de definir o escopo de uma variável no Excel VBA:

  1. Dentro de uma única sub-rotina (variáveis ​​locais)
  2. Dentro de um módulo (variáveis ​​de nível de módulo)
  3. Em todos os módulos (variáveis ​​públicas)

Vejamos cada um deles em detalhes.

Dentro de uma única sub-rotina (variáveis ​​locais)

Quando você declara uma variável dentro de uma sub-rotina / procedimento, então essa variável está disponível apenas para essa sub-rotina.

Você não pode usá-lo em outras sub-rotinas do módulo.

Assim que a sub-rotina termina, a variável é excluída e a memória usada por ela é liberada.

No exemplo abaixo, as variáveis ​​são declaradas dentro da sub-rotina e seriam excluídas quando esta sub-rotina terminar.

Dentro de um módulo (variáveis ​​de nível de módulo)

Quando você deseja que uma variável esteja disponível para todos os procedimentos em um módulo, você precisa declará-la no topo do módulo (e não em qualquer sub-rotina).

Depois de declarar no início do módulo, você pode usar essa variável em todos os procedimentos desse módulo.

No exemplo acima, a variável 'i' é declarada na parte superior do módulo e está disponível para ser usada por todos os módulos.

Observe que, quando a sub-rotina termina, as variáveis ​​do nível do módulo não são excluídas (mantém seu valor).

Abaixo está um exemplo, onde tenho dois códigos. Quando eu executo o primeiro procedimento e, em seguida, executo o segundo, o valor de 'i' torna-se 30 (uma vez que carrega o valor de 10 do primeiro procedimento)

Em todos os módulos (variáveis ​​públicas)

Se quiser que uma variável esteja disponível em todos os procedimentos da pasta de trabalho, você precisa declará-la com a palavra-chave Pública (em vez de DIM).

A linha de código abaixo na parte superior do módulo tornaria a variável ‘CommissionRate’ disponível em todos os módulos da pasta de trabalho.

 Taxa de comissão pública em dobro

Você pode inserir a declaração da variável (usando a palavra-chave Public), em qualquer um dos módulos (na parte superior antes de qualquer procedimento).

Variáveis ​​estáticas (que retêm o valor)

Quando você trabalha com variáveis ​​locais, assim que o procedimento termina, a variável perderia seu valor e seria excluída da memória do VBA.

Caso você queira que a variável mantenha o valor, você precisa usar o Estático palavra-chave.

Deixe-me primeiro mostrar o que acontece em um caso normal.

No código abaixo, quando eu executar o procedimento várias vezes, ele mostrará o valor 10 todas as vezes.

Sub Procedure1 () Dim i As Integer i = i + 10 MsgBox i End Sub

Agora, se eu usar a palavra-chave Static em vez de DIM e executar o procedimento várias vezes, ele continuará mostrando valores em incrementos de 10. Isso acontece porque a variável 'i' retém seu valor e o usa no cálculo.

Sub Procedure1 () Static i As Integer i = i + 10 MsgBox i End Sub

Declarando constantes no Excel VBA

Embora as variáveis ​​possam mudar durante a execução do código, se você quiser ter valores fixos, pode usar constantes.

Uma constante permite que você atribua um valor a uma string nomeada que você pode usar em seu código.

A vantagem de usar uma constante é que ela torna mais fácil escrever e compreender o código e também permite que você controle todos os valores fixos de um lugar.

Por exemplo, se você está calculando comissões e a taxa de comissão é de 10%, você pode criar uma constante (CommissionRate) e atribuir o valor 0,1 a ela.

No futuro, se a taxa de comissão for alterada, você só precisará fazer a alteração em um lugar, em vez de alterá-la manualmente no código em todos os lugares.

Abaixo está um exemplo de código onde atribuí um valor à constante:

Sub CalculateCommission () Dim CommissionValue As Double Const CommissionRate As Double = 0,1 CommissionValue = Range ("A1") * CommissionRate MsgBox CommissionValue End Sub

A seguinte linha é usada para declarar a constante:

Const CommissionRate As Double = 0,1

Ao declarar constantes, você precisa começar com a palavra-chave ‘Const‘, Seguido pelo nome da constante.

Observe que eu especifiquei o tipo de dados da constante como Double neste exemplo. Novamente, é uma boa prática especificar o tipo de dados para fazer seu código rodar mais rápido e ser mais eficiente.

Se você não declarar o tipo de dados, ele será considerado um tipo de dados variante.

Assim como as variáveis, as constantes também podem ter escopo com base em onde e como são declaradas:

  1. Dentro de uma única sub-rotina (constantes locais): Estão disponíveis na sub-rotina / procedimento em que são declarados. Quando o procedimento termina, essas constantes são excluídas da memória do sistema.
  2. Dentro de um módulo (constantes de nível de módulo): Estes são declarados na parte superior do módulo (antes de qualquer procedimento). Eles estão disponíveis para todos os procedimentos do módulo.
  3. Em todos os módulos (constantes públicas): Estes são declarados usando a palavra-chave ‘Público’, na parte superior de qualquer módulo (antes de qualquer procedimento). Estão disponíveis para todos os procedimentos em todos os módulos.

Você também pode gostar dos seguintes tutoriais de VBA:

  • Como gravar uma macro no Excel
  • Trabalhando com células e intervalos no Excel VBA
  • Trabalho com planilhas usando Excel VBA
  • Trabalho com pastas de trabalho no Excel VBA
  • Eventos VBA
  • Excel VBA Loops
  • Como executar uma macro no Excel
  • Instrução If Then Else no Excel VBA.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave