VBA VarType

Este artigo demonstrará o uso da função VarType no VBA.

VarType significa tipo de variável. Podemos fornecer o nome da variável para a função VarType, e ela retornará um inteiro que representa o tipo de dados armazenados nessa variável de acordo com uma lista de constantes VBA.

Usando uma Variant Variable para encontrar o VarType

Podemos declarar uma variável como uma variável Variant. Isso nos permitirá armazenar qualquer tipo de dados permitidos nele. Podemos então preencher essa variável e usar a função VarType para ver que tipo de dados está na variável.

Por exemplo:

12345 Sub TestVarType ()Dim MyVariable As VariantMyVariable = "Hello World"MsgBox "O tipo de variável é" & VarType (MyVariable)End Sub

Isso retornará a seguinte caixa de mensagem:

O valor de 8 é, portanto, retornado. Isso em uma constante do Excel que define o tipo de dados que são armazenados na variável.

Este valor constante corresponde à tabela abaixo:

Constante Valor Descrição
vbEmpty 0 Vazio (não inicializado)
vbNull 1 Nulo (sem dados válidos)
vbInteger 2 Inteiro
vbLong 3 Inteiro longo
vbSingle 4 Número de ponto flutuante de precisão única
vbDouble 5 Número de ponto flutuante de precisão dupla
vbCurrency 6 Valor da moeda
vbDate 7 Valor da data
vbString 8 Fragmento
vbObject 9 Objeto
vbError 10 Valor de erro
vbBoolean 11 Valor booleano
vbVariant 12 Variante (usado apenas com matrizes de variantes)
vbDataObject 13 Um objeto de acesso a dados
vbDecimal 14 Valor decimal
vbByte 17 Valor de byte
vbLongLong 20 LongLong inteiro (válido apenas em plataformas de 64 bits)
vbUserDefinedType 36 Variantes que contêm tipos definidos pelo usuário
vbArray 8192 Array (sempre adicionado a outra constante quando retornado por esta função)

Podemos tentar outro exemplo:

12345 Sub TestVarType ()Dim MyVariable As VariantMyVariable = 32760MsgBox "O tipo de variável é" & VarType (MyVariable)End Sub

Desta vez, a caixa de mensagem retornará 2, pois o tipo de dado armazenado na variável é inteiro.

No entanto, se alterarmos o valor para 32780, o valor de retorno será 3 - Inteiro longo, pois o tipo de dados Inteiro tem um valor máximo de 32767; após o qual é um número inteiro longo.

Se formos mais uma vez alterar o código:

12345 Sub TestVarType ()Dim MyVariable As VariantMyVariable = 32760.52MsgBox "O tipo de variável é" & VarType (MyVariable)End Sub

Agora obteríamos um valor de 5 sendo retornado - o tipo de dados é Double devido às casas decimais.

Se colocássemos o valor na variável entre aspas, mais uma vez um 8 seria retornado, pois qualquer valor contido entre aspas é armazenado como um valor de string.

12345 Sub TestVarType ()Dim MyVariable As VariantMyVariable = "32760.52"MsgBox "O tipo de variável é" & VarType (MyVariable)End Sub
wave wave wave wave wave