eXcellence-team eXcellence

Циклы For

Оператор For предназначен для организации циклов с заранее известным числом повторений. Есть два варианта его использования. Первый - использование конструкции For - Next:

For i = 1 to 10
  if Cells(1,i) <> "" then Exit For
  Cells(1,i).Value = i
Next i

Переменная i принимает значения от 1 до 10. В случае необходимости выполнение цикла можно прервать командой Exit For.

Второй вариант цикла For позволяет перебирать все элементы, входящие в массив или коллекцию. Он полезен, когда нужно произвести однотипные операции над всем массивом. Описание его такое:

For Each переменная In массив
  Действия
Next переменная

Переменная должна иметь тип Variant или Object, в котором можно хранить практически всё. Пример:

Sub Test()
  Dim arr(1) As String
  arr(0) = "First element"
  arr(1) = "Second element"
  Dim v As Variant
  For Each v In arr
   MsgBox (v)
  Next v
End Sub

For Each очень удобен для работы с коллекциями. Вот так можно пробежаться по открытым книгам.

Sub Test()
  Dim v As Variant
  For Each v In Workbooks
   MsgBox (v.Name)
  Next v
End Sub

Или по листам книги:

Sub Test()
  Dim v As Variant
  For Each v In Workbooks.Item("book.xls").Sheets
   MsgBox (v.Name)
  Next v
End Sub