Информатика: Сборник лабораторных работ по программированию в среде Visual Basic for Applications, страница 21

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

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

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

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

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

Пример 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

4. Задания к лабораторной работе

1. Заполните данными несколько строк таблицы:

Месяц

Выпуск продукции в млн. руб.

Процент выполнения плана

План

Факт

январь

12,5

12,4

. . .

Составить блок-схему и программу для заполнения в таблице графы Процент выполнения плана (факт/план). В клетках, где процент выполнения плана больше 100%, изменить цвет шрифта на красный (ColorIndex =3).

В программе использовать цикл с предусловием, анализируя пустая или нет клетка в графе месяц.

2. В банке открыт счет. Банк ежегодно начисляет фиксированный процент от вклада. Соответственно увеличивается сумма вклада. Составить программу, которая рассчитывает величину вклада и выводит эту величину для каждого года, пока величина вклада не увеличится вдвое. Для решения этой задачи предусмотреть клетки для ввода первоначальной величины вклада, учетной ставки процента от вклада, года помещения вклада в банк, а также для вывода года, когда сумма первоначального вклада удвоится.

3. В клетке А2 на Листе1 записаны фамилия, имя и отчество сотрудника (например, Попова Анна Николаевна). В клетку А2 на Лист2 переписать только фамилию сотрудника.

Составить блок-схему и программу для этой задачи, используя цикл с постусловием. Фамилия, имя и отчество отделяются символом «пробел». В программе рекомендуется использовать функцию обработки строк – MID(Строка, НачЗнач, Длина).