Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник по VBA.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
6 Мб
Скачать
☆

3. Цикл For Each … Next

Этот цикл выполняет группу операторов для каждого элемента массива или семейства объектов (вместо того чтобы выполнять цикл заданное количество раз). Такой цикл удобно использовать, когда заранее неизвестно количество элементов в массиве или семействе объектов. Для реализации этого цикла используется оператор For Each … Next.

Синтаксис оператора:

For Each <элемент> In <группа>

Next [<элемент>]

<Элемент> – это переменная, которая используется для представления элементов массива или семейства объектов. На каждом проходе переменная цикла (<элемент>) будет содержать в себе очередной элемент массива или объект семейства. Доступ к свойствам и методам объекта при этом становится возможным через имя переменной цикла (<элемента>).

Для массивов <элемент> может быть только переменной типа Variant. Для семейств – переменной типов Variant, Object или переменной, представляющей любой конкретный объект.

<Группа> – это имя массива (за исключением массивов с пользовательскими типами) или семейства объектов.

Оператор Exit For позволяет выйти из цикла по какому-то условию.

Операторы тела цикла выполняются последовательно для всех элементов указанной <группы>, сначала для первого, затем для второго и т.д.

Допускается организация вложенных циклов For Each … Next, каждый <элемент> цикла при этом должен быть уникальным, т.е.<элемент>для внутреннего и <элемент> для внешнего циклов должны быть разными переменными.

Пример 3. Заменить все положительные числа в диапазоне А10:А20 на Листе1 знаком «+», а все отрицательные – знаком « - ».

Рис.15. Блок-схема к примеру 3

В нижеприведенной программе в качестве <элемента> используется переменная с типа Object. Через эту переменную в цикле происходит обращение к каждой из клеток семейства клеток А10:А20. При изменении свойств этой переменной меняются и аналогичные свойства соответствующих объектов-клеток.

Sub PR3( )

Dim c As Object

For Each c In Worksheets (”Лист1 ”).Range(”A10:A20”)

If c.Value>0 Then

c.Value=”+”

ElseIf c.Value<0 Then

c.Value=”-”

End If

Next c

End Sub

Пример 4. Создать функцию, подсчитывающую сумму кубов значений элементов числового массива. Использовать эту функцию для подсчета суммы кубов значений в клетках выделенного блока клеток рабочего листа активной книги Excel.

Sub Pr4()

Dim c, selectedrange As Object

Dim mas1() As Single

Dim n, i As Integer

’ Для присвоения значений переменным-объектам используется оператор Set

Set selectedrange = Selection

’ Определяем количество клеток в выделенном блоке клеток

For Each c In selectedrange

n = n + 1

Next c

ReDim mas1(n) ’ переопределяем размерность массива mas1

For Each c In selectedrange

i = i + 1

mas1(i) = c.Value

Next c

Cells(1, 1) = sum_kub(mas1)

End Sub

______________________________

Function sum_kub(mas As Variant) As Double

’ Если параметр функции передает значение массива, то он должен иметь тип Variant

Dim s As Variant

sum_kub = 0

For Each s In mas

sum_kub = sum_kub + s ^ 3

Next s

End Function