VBA Loop Através de uma Matriz / Percorrer Itens de uma Matriz
In this Article
Este tutorial ensinará a você como fazer loop em matrizes no VBA.
Há duas maneiras principais de fazer loop em matrizes usando o VBA:
- For Each Loop – O For Each Loop percorrerá cada item da matriz.
- For Next Loop – O For Next Loop percorrerá através das posições iniciais e finais especificadas da matriz (podemos usar as funções UBound e LBound para percorrer toda a matriz).
Para cada item na matriz (For Each Loop)
O Loop For Each permite que você faça um loop em cada elemento da matriz.
Sub LoopPelaMatrizEstatica()
'declarar a matriz
Dim strNomes(1 To 4) As String
'preencher a matriz
strNomes(1) = "Bob"
strNomes(2) = "Peter"
strNomes(3) = "Keith"
strNomes(4) = "Sam"
'declarar uma variável variante para guardar o elemento da matriz
Dim item as variant
'percorrer toda a matriz
For Each item in strNomes
'mostra o elemento na janela de depuração.
Debug.Print item
Next item
End Sub
O procedimento acima percorrerá todos os nomes da matriz.
Loop For Next
O Loop For Next percorrerá cada item entre uma posição inicial e final especificada da matriz.
Loop em Parte da Matriz
Você pode especificar manualmente as posições inicial e final do loop. Isso pode ser apropriado se você souber o tamanho da matriz e/ou quiser percorrer apenas parte de uma matriz.
Sub LoopForNextEstatico()
'declarar a matriz
Dim strNomes(1 To 4) As String
'preencher a matriz
strNomes(1) = "Bob"
strNomes(2) = "Peter"
strNomes(3) = "Keith"
strNomes(4) = "Sam"
'declarar uma integer
Dim i As Integer
'loop da posição 2 para a posição 3 da matriz
For i = 2 To 3
'mostra o elemento na janela de depuração.
Debug.Print strNomes(i)
Next i
End Sub
No exemplo acima, fizemos um loop pelas posições 2 e 3 da matriz. A janela imediata retornaria os nomes da seguinte forma.
Loop em Toda a Matriz
Em seguida, usaremos as funções UBound e LBound para percorrer uma matriz inteira. Isso é extremamente útil se as posições inicial e final da matriz puderem mudar (por exemplo, uma matriz dinâmica):
Sub LoopForNextDinamico()
'declarar a matriz
Dim strNomes() As String
'inicializar a matriz
ReDim strNomes(1 to 4)
'preencher a matriz
strNomes(1) = "Bob"
strNomes(2) = "Peter"
strNomes(3) = "Keith"
strNomes(4) = "Sam"
'declarar uma integer
Dim i As Integer
'loop do limite inferior da matriz até o limite superior da matriz - a matriz inteira
For i = LBound(strNomes) To UBound(strNomes)
'mostrar o nome na janela de verificação imediata
Debug.Print strNomes(i)
Next i
End Sub