Assim como o For Next, For Each trata-se de um laço/loop.
For Each é um tipo de loop que normalmente é empregado com vetores, matrizes ou coleções (tópico avançado). Funciona de forma similar ao loop For Next, porém ele executa uma iteração para cada elemento disponível no vetor, matriz ou coleção.
Dim AVetor(2) As String
AVetor(0) = "Um"
AVetor(1) = "Dois"
AVetor(2) = "Três"
For Each Elemento In AVetor
Msgbox Elemento
Next Elemento
Elemento é apenas um nome escolhido para exemplificação. Qualquer nome de variável funcionará para o For Each (desde que respeite as regras de nomeação de variável).
Para cada iteração, a variável Elemento assumirá o valor de um elemento do vetor: Na primeira iteração, Elemento assumirá o valor de AVetor(0), ou seja, "Um", na segunda iteração assumirá o valor de AVetor(1), ou seja, "Dois" e assim por diante.
Cuidado pois o For Each passará por todos os elementos, mesmo sem valor, do vetor, matriz ou coleção.
Dim AVetor(4) As String 'matrix com 5 elementos AVetor(0) = "Um" AVetor(1) = "Dois" AVetor(2) = "Três" 'AVetor(3) = "" 'AVetor(4) = "" For Each Elemento In AVetor Msgbox Elemento Next Elemento 'O último MsgBox virá vazio equivalendo a AVetor(4)
Para evitar esse tipo de problema, podemos adicionar um If Then para checar se o elemento tem algum valor.
Dim AVetor(4) As String AVetor(0) = "Um" AVetor(1) = "Dois" AVetor(2) = "Três" For Each Elemento In AVetor If Elemento <> "" Then Msgbox Elemento End If Next Elemento 'O último MsgBox virá vazio equivalendo a AVetor(2)
Lembre-se de que String sem valor declarado é igual a "".
SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.
Excel ® é uma marca registrada da Microsoft Corporation.
© 2024 SuperExcelVBA | SOBRE