Como usar a instrução For Each…Next no VBA?

A instrução `For Each…Next` no VBA (Visual Basic for Applications) é utilizada para iterar sobre uma coleção de objetos ou uma matriz. É uma maneira conveniente de percorrer todos os elementos de uma coleção sem a necessidade de controlar manualmente os índices. Aqui está como você pode usar essa instrução:

Estrutura Básica

Dim item As Variant ' ou outro tipo adequado
For Each item In coleção
    ' Código a executar para cada item
Next item

Exemplos

Iterando Sobre uma Coleção de Células

Se você deseja iterar sobre um conjunto de células em uma planilha do Excel, pode fazer assim:

Dim cell As Range
For Each cell In Range("A1:A10")
    cell.Value = cell.Value * 2 ' Por exemplo, dobrando o valor de cada célula
Next cell

Iterando Sobre uma Matriz

Se você estiver iterando sobre uma matriz:

Dim arr As Variant
arr = Array(1, 2, 3, 4, 5)

Dim num As Variant
For Each num In arr
    Debug.Print num ' Imprime cada número no console de depuração
Next num

Iterando Sobre Objetos em uma Coleção

Aqui está um exemplo que percorre todos os gráficos em uma planilha do Excel:

Dim cht As ChartObject
For Each cht In Worksheets("Sheet1").ChartObjects
    cht.Chart.ChartType = xlLine ' Define todos os gráficos como gráficos de linha
Next cht

Notas Importantes

  • Tipo de Dados: A variável de iteração (`item` nos exemplos) deve ser do tipo apropriado para os elementos na coleção. Se você não tiver certeza sobre o tipo, você pode usar `Variant`.
  • Coleções VBA: Muitas partes do Excel VBA, como Workbooks, Worksheets, e Cells, usam coleções que podem ser iteradas usando `For Each`.
  • Matrizes Dinâmicas: Em VBA, se você usar `For Each` em uma matriz, ela deve ser do tipo Variant.

A instrução `For Each…Next` é particularmente poderosa para facilitar a leitura de código e evitar erros associados a índices fora do intervalo ou loops complexos.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project