Дополнительные возможности MS Excel и VBA для работы с объектами

Цикл For Each ... Next

В VBA при обработке объектов, составляющих массив или семейство (коллекцию) однотипных объектов, часто используется разновидность цикла For Each ... Next. В этой разновидности счетчик отсутствует, а тело цикла выполняется для каждого элемента массива или семейства объектов, т.е. осуществляется перебор всех элементов из заданного массива или набора объектов.

Синтаксис такого цикла следующий:

For Each <элемент> in <совокупность>

<блокОператоров>

Next <элемент> ,

где <блокОператоров> — тело цикла (один, несколько или ни одного оператора VBA); <элемент> — переменная, предназначенная для ссылки на элементы семейства объектов; <совокупностъ> — имя массива или семейства (коллекция).

Если <совокупностъ> — это объект коллекции, то переменная <элемент> должна быть типа variant, object или заданным объектным типом (например, range, worksheet, document, paragraph и т.д.). Если <совокупностъ> — это массив, то переменная <элемент> должна быть переменной типа variant, а массив может использоваться только для чтения.

Примеры:

'Применение цикла обработки набора объектов.

Sub Range_In()

Dim о As Range

For Each о In Worksheets("Лист4").Range("B1:DIO") o.Value = 15 Next о

End Sub

'Использование цикла обработки массива.

Sub Arr_In()

Dim a(l To 6, 1 To 3) As Single Dim V As Single, о As Variant For Each о In a V = V + о Next о

MsgBox ("V =") & CStr(V)

End Sub

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >