| У цикла For Each…Next нет счетчика как в цикле For…Next. Цикл выполняется фиксированное кол-во раз, соответствующее количеству элементов в массиве. 
 Цикл For Each…Next имеет следующий синтаксис:
 
 For Each x In Array
 
 //операторы//
 
 Next [x]
 
 x
 – это переменная, которая перебирает все элементы в группе или массиве (в нашем случае это Array)
 
 Array
 – это массив или коллекция
 
 Пример №1:
 В нижеуказанном примере элемент x объявляется как Лист (Worksheet) и с помощью цикла по всем листам данной книги (ThisWorkbook.Worksheets), в ячейке А1 проставляется имя соответствующего листа.
 
 
 Sub example1 ()
Dim x As Worksheet
For Each x In ThisWorkbook.Worksheets
x.Range("A1").Value = x.Name
Next x
End Sub 
Пример №2:В следующем примере x объявляется как ячейка/диапазон (Range) и с помощью цикла и простого оператора ветвления If..Then..Else перебираются все заполненные ячейки на активном листе, и если ячейка со значением «1» найдена – она заливается красным цветом.
 
 
 Sub example2 ()
Dim x As Range
For Each x In ActiveSheet.UsedRange.Cells
If x.Value = 1 Then
x.Interior.ColorIndex = 3
End If
Next x
End Sub 
Пример№3: В данном примере x объявляется как Лист (Worksheet) и с помощью цикла все листы данной книги (ThisWorkbook.Worksheets) переименовываются на Sheet плюс случайное число.
 Sub example3 ()
Dim x As Worksheet
 For Each x In ThisWorkbook.Worksheets
x.Name = "Sheet" & Round(Rnd * 1000)
Next x
End Sub 
 |