Escolha seu idioma de preferência

VBA For Each


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 "".


Exibir Tópico Avançado


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.

© 2019 SuperExcelVBA | SOBRE

Protected by Copyscape