Estou olhando esta documentação , entendo o For Loops
, entendo Counters
, Steps
, etc. Mas quando chego à seção VBA For Each Loop da página, não entendo muito bem.
O loop VBA For Each é um escopo que define uma lista de instruções que devem ser repetidas para todos os itens especificados dentro de uma certa coleção/matriz de itens. O loop For Each, em comparação com o loop For, não pode ser usado para iterar de um intervalo de valores especificados com um valor inicial e final.
Parecia que as palavras estavam pulando ao mesmo tempo. Eles me deram um exemplo que era um pouco mais complicado:
Dim x(3) as Long, xIterator as Variant
x(0) = 1: x(1) = 2: x(2) = 3
For Each xIterator in x
Debug.Print x
Next xIterator
'Result: 1,2,3
Quero uma definição que seja fácil de entender com um exemplo. Por favor, saiba que sou novo em Excel/VBA
Imagine que você tem uma caixa de brinquedos (uma "coleção"). O
For Each
loop é como dizer:"Para cada brinquedo nesta caixa, quero fazer algo com ele (como inspecioná-lo, colocá-lo em uma prateleira, etc.). Depois de fazer isso com cada brinquedo na caixa, termino."
Você não diz quantas vezes ele deve ser executado. Ele é executado uma vez para cada item em uma coleção (como uma caixa de brinquedos, um intervalo de células no Excel, etc.). O número de vezes que ele é executado depende de quantos itens estão na coleção.
Digamos que você tenha alguns números nas células A1 a A5 da sua planilha do Excel, e você quer dobrar o valor de cada uma dessas células usando VBA. Veja como você pode fazer isso com um
For Each
loop:O
For Each
loop é projetado para processar facilmente cada item em uma coleção (como um intervalo de células), sem que você tenha que se preocupar em manter o controle de índices ou contadores. Ele torna seu código mais limpo e fácil de ler quando você quer fazer a mesma coisa para cada item em um grupo.Também vale a pena notar que o
For Each
loop só lê os elementos da coleção, mas não os modifica, a menos que tanto o iterador quanto os elementos da coleção sejam objetos.Compare o código nos exemplos a seguir.