У цикла 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
|