Самый близкий к For Each ... Next цикл For ... Next вот на примере их сравнивание и покажу разницу.
For Each ... Next удобен, когда необходимо проделать действия с каждым элементом массива, не задумываясь о количестве его элементов
Код:

Sub AddNamesToList(ByVal ParamArray NamesArray() As Object)
Dim x As Object
For Each x In NamesArray
ListBox1.Items.Add(x)
Next x
End Sub
после этого в коде пишем AddNamesToList("A", "B", ...."Пока не надоест ")
Для цикла на базе с For ... Next потребуется уточнения про количество параметров, которые передаются
Код:

Sub AddNamesToList(ByRef I As Integer, ByVal ParamArray NamesArray() As Object)
Dim x As Integer
For x = ListBox1.Items.Count + 1 To ListBox1.Items.Count + I
‘ListBox1.Items.Add(NamesArray(Rem...))
Next x
End Sub
AddNamesToList(3, "A", "B", "Теперь указанно, что три элемента ")
и намного больше времени на адаптацию самого кода добавления в список, что б получить тот же эффект что и в предыдущем коде.
С другой стороны иногда требуется сделать выборку не по всем элементам массива, тогда удобнее For ... Next. Да можно и в For Each ... Next указать через If/Select Case и т.д. какие элементы интересуют, но это уже усложнения, проще взять For ... Next, например указывая только чётные элементы
Код:

For iCounter = 0 to 10 Step 2
...
Next iCounter
Вот ещё два примера сравнений двух структур
Код:

Dim i As Integer
For i = 0 To ListBox1.Items.Count - 1
{ statements to process item ListBox1.Items(i) }
Next
...
Dim itm As Object
For Each itm In ListBox1.Items
{ process the current item, represented by the itm variable }
Next
http://www.askit.ru/custom/progr_adm...ript_loops.htm страница хоть и про VbScript но объяснение про циклы катит.