VBA String Array

Excel VBA String Array

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

Para obter um exemplo, veja 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 das 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.

Você pode baixar este modelo VBA String Array Excel aqui - VBA String Array Excel Template

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, mantenha 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 array count começará em 0 e não em 1.

Portanto, é 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 que obtemos do código anterior.

Exemplo # 2

VBA String Array com funções LBOUND e UBOUND

Caso você não queira mostrar toda a lista de cidades em uma única caixa de mensagem, então você precisa incluir loops, defina 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, neste caso, podemos decidir 5 vezes, mas essa não é a maneira certa de abordar o problema. Então, que tal a ideia do identificador de comprimento de array de nível inferior e superior automático ???

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 o nome do 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

Nesse caso, todas as cidades são combinadas com os dois pontos separando cada cidade. Nesses casos, precisamos usar a função SPLIT para separar cada cidade.

Para Expression, forneça a lista de cidades.

Código:

 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 

O próximo argumento é “Delimitador” ou seja, qual é o caractere que separa cada cidade de outras cidades, neste caso, “dois pontos”.

Código:

 Sub String_Array_Example2 () Dim CityList () As String Dim k As Integer CityList = Split ("Bangalore; Mumbai; Kolkata; Hydrabad; Orissa", ";") Para k = LBound (CityList) To UBound (CityList) MsgBox CityList (k ) Próximo 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.