Tipo de Variante Variante
Uma Variant Variable pode conter qualquer momento de dados (string, inteiros, decimais, objetos, etc.). Se você não declarar um tipo de variável, sua variável será considerada variante.
Para declarar uma variável Variant, você usa a declaração Dim (abreviação de Dimension):
1 | Dim varName como variante |
1 | Dim rng como variante |
Então, para atribuir um valor a uma variável, basta usar o sinal de igual:
1 | varName = "John" |
1 | rng = Folhas (1) .Range ("A1") |
Colocar isso em um procedimento é parecido com este:
12345678910 | Sub strExample ()'declara as variantesDim strNome como varianteDim rng como variante'preencher as variáveisstrName = "Fred Smith"Definir rng = Folhas (1) .Range ("A1")'preencher a folharng.Value = strNameEnd Sub |
Se você executar o código acima, a célula A1 na Planilha 1 será preenchida com “Fred Smith”
Pelos nomes declarados acima, podemos concluir que o varName 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 maneira e nenhum erro ocorreria.
1 | varName = 6 |
1 | objSheet - "Fred" |
É incomum usar variáveis variantes e não é considerado uma boa prática. Às vezes, no entanto, as variáveis Variant são úteis.
Declarar Variante Variante no Módulo ou Nível Global
No exemplo anterior, você declarou a variável Variant em um procedimento. Variáveis declaradas com um procedimento só podem ser usadas dentro desse procedimento.
Em vez disso, você pode declarar variáveis Variant no módulo ou nível global.
Nível de Módulo
Nível de módulo variáveis são declaradas no topo dos módulos de código com o Dim demonstração.
Essas variáveis podem ser usadas com qualquer procedimento nesse módulo de código.
Nível global
Nível global variáveis também são declaradas no topo dos módulos de código. No entanto, em vez de usar o Dim declaração, você usa o Público declaração para indicar que a variável string está disponível para ser usada em todo o seu projeto VBA.
1 | StrNome público como variante |
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.
Se você tivesse usado a palavra-chave Public para declarar a variável variante, o erro não ocorreria e o procedimento seria executado perfeitamente.
Usando uma variante para preencher o Excel
Considere o seguinte procedimento:
12345678910111213141516171819 | Sub TestVariable'declara uma string para conter o nome do produtoDim strProduct as string'declara um número inteiro para conter a quantidade do produtoDim iQty como inteiro'declara o dobro para manter o preço do produto e o preço totalDim dblPrice as DoubleDim dblTotal as Double'preencher as variáveisstrProduct = "Farinha de uso geral"iQty = 3dblPrice = "$ 5,00"dblTotal = "$ 15,00"'preencher a planilha do ExcelIntervalo ("A1") = strProdutoIntervalo ("A2") = iQtyIntervalo ("A3") = dblPriceIntervalo ("A4") = dblTotalEnd Sub |
Quando executamos este código, ocorre o seguinte erro.
Clique em Depurar
Você não pode colocar um cifrão na variável, pois a variável é declarada como um Dobroe, portanto, não pode armazenar valores de string.
Declarar dblPrice e dblTotal como variantes, o que significa que você não está restrito a um tipo de dados.
1 | Dim dblPrice as Variant |
1 | Dim dblTotal como variante |
Execute novamente o código e os dados aparecerão na planilha do Excel como deveriam.
Observe que os dados inseridos em A4 e A5 são automaticamente convertidos pelo Excel em números.
Declarando um array dinâmico
Variáveis variantes também são úteis quando você está declarando uma matriz dinâmica, pois permitem que o tamanho da matriz mude durante o tempo de execução.
Com umVariant Array, você não precisa definir o tamanho da matriz. O tamanho será ajustado automaticamente.
123456789 | Sub VariantArray ()Dim arrList () como variante'Definir ValoresarrList = Array (1, 2, 3, 4)'Mudar valoresarrList = Array (1,2,3,4,5,6)'Posição de Saída 4MsgBox arrVar (4)End Sub |