Tipo de dados de variante VBA (variável Dim)

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
wave wave wave wave wave