VBA String Array - Como declarar e inicializar matriz de string no Excel VBA?

Excel VBA String Array

No VBA, um array String nada mais é que uma variável de array que pode conter mais de um valor de string com uma única variável.

Por exemplo, observe o código VBA abaixo.

Código:

Sub String_Array_Example () Dim CityList (1 a 5) As Variant CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissa" MsgBox CityList (1) & "," & CityList (2) & "," & CityList (3) & "," & CityList (4) & "," & CityList (5) End Sub

No código acima, declarei como variável de matriz e atribuí o comprimento de uma matriz de 1 a 5.

Dim CityList (1 a 5) como variante

Para esta variável de array, atribuí 5 nomes de cidades, mencionando cada contagem de array entre parênteses.

CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissa"

Em seguida, escrevi um código para mostrar os nomes dessas cidades na caixa de mensagem.

MsgBox CityList (1) & "," & CityList (2) & "," & CityList (3) & "," & CityList (4) & "," & CityList (5)

Quando eu executar este código, obteremos uma caixa de mensagem que mostra todos os nomes de cidades em uma única caixa de mensagem.

Todos nós sabemos que isso economizou muito tempo de nossa programação, eliminando a tarefa de declarar variáveis ​​individuais para cada cidade. No entanto, mais uma coisa que você precisa aprender é que ainda podemos reduzir o código de linha que escrevemos para valores de string. Vejamos como escrevemos código para matrizes de strings VBA.

Exemplos de String Array no Excel VBA

Abaixo estão os exemplos de uma matriz de string VBA do Excel.

Exemplo 1

Como vimos no código acima, aprendemos que podemos armazenar mais de um valor na variável com base no tamanho do array determinado.

Agora o que precisamos fazer é não decidir o comprimento do array com antecedência.

Código:

Sub String_Array_Example1 () Dim CityList () As Variant End Sub

Como você pode ver acima, entre parênteses, não escrevi nenhum comprimento. Agora, para esta variável, vamos inserir valores usando a função VBA ARRAY.

Dentro do Array, passe os valores entre aspas duplas, cada um separado por uma vírgula (,).

Código:

Sub String_Array_Example () Dim CityList () As Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") End Sub

Agora retenha o código antigo para mostrar o resultado dos nomes das cidades na caixa de mensagem no VBA.

Código:

Sub String_Array_Example1 () Dim CityList () As Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") MsgBox CityList (0) & "," & CityList (1) & " , "& CityList (2) &", "& CityList (3) &", "& CityList (4) End Sub

Uma mudança que fiz no código acima é que não decidimos o limite inferior e o limite superior de uma variável de array e usamos a função ARRAY, a contagem do array começará em 0, não em 1.

Então, é por isso que mencionamos os valores como CityList (0), ClityList (1), CityList (2), CityList (3) e CityList (4).

Agora execute o código por meio da tecla de atalho do Excel F5 ou manualmente. Obtemos o mesmo resultado do código anterior.

Exemplo # 2

VBA String Array com funções LBOUND e UBOUND

Caso você não queira mostrar todas as listas de cidades em uma única caixa de mensagem, então você precisa incluir loops, definir mais uma variável para loops.

Agora, para incluir o loop FOR NEXT, não temos certeza de quantas vezes precisamos executar o código. Nesse caso, podemos decidir 5 vezes, mas essa não é a maneira certa de abordar o problema. Então, que tal a ideia de um identificador automático de comprimento de array de nível inferior e superior ???

Quando abrimos o loop FOR NEXT, geralmente decidimos o comprimento do loop como 1 a 5 ou 1 a 10, dependendo da situação. Em vez de inserir os números manualmente, vamos usar as funções LBOUND e UBOUND para decidir o valor inferior e o valor superior automaticamente.

Para LBound e Ubound, forneci um nome de array, ou seja, CityList. O VBA LBound identifica o valor inferior da variável de array e a função VBA UBound identifica o valor superior da variável de array.

Agora mostre o valor na caixa de mensagem, em vez de inserir o número de série, deixe a variável de loop “k” assumir o valor do array automaticamente.

Código:

Sub String_Array_Example1 () Dim CityList () As Variant Dim k As Integer CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") Para k = LBound (CityList) To UBound (CityList) MsgBox CityList (k) Next k End Sub

Agora a caixa de mensagem mostrará cada nome de cidade separadamente.

Exemplo # 3

VBA String Array com Split Function

Agora suponha que você tenha nomes de cidades como os abaixo.

Bangalore; Mumbai; Calcutá; Hydrabad; Orissa

In this case, all the cities are combined together with the colon separating each city. In such cases, we need to use the SPLIT function to separate each city.

For Expression, supply the city list.

Code:

Sub String_Array_Example2() Dim CityList() As String Dim k As Integer CityList = Split("Bangalore;Mumbai;Kolkata;Hydrabad;Orissa", For k = LBound(CityList) To UBound(CityList) MsgBox CityList(k) Next k End Sub

The next argument is “Delimiter,” i.e., what is the one character that is separating each city from other cities. In this case, “Colon.”

Code:

Sub String_Array_Example2() Dim CityList() As String Dim k As Integer CityList = Split("Bangalore;Mumbai;Kolkata;Hydrabad;Orissa", ";") For k = LBound(CityList) To UBound(CityList) MsgBox CityList(k) Next k End Sub

Agora, os valores de divisão da função SPLIT também determinam o maior comprimento do array.

Coisas para lembrar

  • LBOUND e UBOUND são funções para determinar os comprimentos do array.
  • A função ARRAY pode conter muitos valores para uma variável declarada.
  • Uma vez, se você quiser usar a função ARRAY, não decida o comprimento do array.

Artigos interessantes...