VBA – Tipo de Dados Variant (Dim Variavel)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on August 25, 2023

Tipo de Variável Variant

Uma variável Variant pode conter qualquer tipo de dados (cadeia de caracteres, números inteiros, decimais, objetos etc.). Se você não declarar um tipo de variável, sua variável será considerada variant.

Para declarar uma variável Variant, você usa a declaração Dim (abreviação de Dimensão):

Dim varNome as Variant
Dim rng as Variant

Em seguida, para atribuir um valor a uma variável, basta usar o sinal de igual:

varNome = "John"
rng = Sheets(1).Range("A1")

Colocar isso em um procedimento tem a seguinte aparência:

Sub strExamplo()
'declarar as variantes
    Dim strNome As Variant
    Dim rng As Variant
'preencher as variáveis
    strNome = "Fred Smith"
    Set rng = Sheets(1).Range("A1")
'preencher a planilha
    rng.Value = strNome
End Sub

Se você executar o código acima, a célula A1 da Planilha 1 será preenchida com “Fred Smith”.

vba variant fredsmith

Pelos nomes declarados acima, poderíamos concluir que o varNome conteria texto e o objSheet conteria um objeto de planilha. Mas, na verdade, qualquer tipo de dado pode ser direcionado para a variável.

Você poderia preencher as variáveis declaradas acima da seguinte forma e nenhum erro ocorreria.

varNome = 6
objSheet - "Fred"

O uso de variáveis variant é incomum e não é considerado uma boa prática. Entretanto, em algumas ocasiões, as variáveis variant são úteis.

Declarar a Variável Variant no Módulo ou no Nível Global

No exemplo anterior, você declarou a variável Variant em um procedimento. As variáveis declaradas com um procedimento só podem ser usadas dentro desse procedimento

variant nivel modulo

Em vez disso, você pode declarar variáveis Variant no nível do módulo ou global.

Nível do Módulo

As variáveis em nível de módulo são declaradas na parte superior dos módulos de código com a instrução Dim.

declarando variant fora sub

Essas variáveis podem ser usadas com qualquer procedimento nesse módulo de código.

Nível Global

As variáveis de nível global também são declaradas na parte superior dos módulos de código. No entanto, em vez de usar a instrução Dim, você usa a instrução Public para indicar que a variável variant está disponível para ser usada em todo o seu projeto VBA.

Public strNome as Variant

declarando variant public

Se você declarasse a variável variante em um nível de módulo e a usasse em um módulo diferente, ocorreria um erro

erro variavel nao definida

Se você tivesse usado a palavra-chave Public para declarar a variável variant, o erro não ocorreria e o procedimento seria executado perfeitamente.

Uso de uma Variant para Preencher o Excel

Considere o procedimento a seguir:

Sub TestarVariavel()
'declarar uma cadeia de caracteres para armazenar o nome do produto
 Dim strProduto as string
'declarar um número inteiro para armazenar a quantidade do produto
 Dim iQtd as integer
'declarar números duplos para armazenar o preço do produto, e o preço total
 Dim dblPreco as Double
 Dim dblTotal as Double
'preencher as variáveis
 strProduto = "Farinha de trigo"
 iQtd = 3
 dblPreco = "$5.00"
 dblTotal = "$15.00"
'preencher a planilha do Excel
 Range("A1") = strProduto
 Range("A2") = iQtd
 Range("A3") = dblPreco
 Range("A4") = dblTotal
End Sub

Quando executamos esse código, ocorre o seguinte erro.

erro tipos inconpativeis

Clique em Depurar

depurando erro variavel

Não é possível colocar um cifrão na variável, pois a variável é declarada como Double e, portanto, não pode armazenar valores de cadeia de caracteres.

Declare dblPreco e dblTotal como Variants, o que significa que você não está restrito a um tipo de dados.

Dim dblPreco as Variant
Dim dblTotal como Variant

Execute novamente o código e os dados aparecerão na planilha do Excel como deveriam.

resultado na planilha

Observe que os dados inseridos em A4 e A5 são automaticamente convertidos pelo Excel em números.

conversao em numero

Declaração de uma Matriz Dinâmica

As variáveis tipo variant também são úteis quando você está declarando uma matriz dinâmica, pois permitem que o tamanho da matriz seja alterado durante o tempo de execução.

Com uma matriz variante, você não precisa definir o tamanho da matriz. O tamanho se ajustará automaticamente.

Sub MatrizVariant()
    Dim arrLista() As Variant
 'Definir valores
    arrLista= Array(1, 2, 3, 4)
'Alterar valores
    arrLista = Array(1,2,3,4,5,6)
'Posição de saída 4
    MsgBox arrLista(4)
End Sub
vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA