Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример 19.22

Управляющие структуры

Функции пользователя

На языке VBA можно создавать функции пользователя, которые, в отличие от процедуры, возвращают вычисленное значение (одно); оно может участвовать в выражениях оператора присваивания.

Заголовок функции пользователя имеет вид:

Function <имя_процедуры>(аргументы) As <type>

тело процедуры (операторы)

End Function

Внимание! Для функции указывается тип возвращаемой величины - As <type>. В теле функции используется оператор присваивания вычисленного значения имени функции.

Пример 19.21. Использование пользовательской функции вычисления площади прямоугольника

Текст программы Комментарий
Sub Proc_A () Dim S as Single Dim LL as Single Dim HH as Single LL=12 HH=23 S=Sq(LL; H)/2+1200 End Sub Function Sq (H As Single; L As Single As Single) Sq=H*L End Function Вызывающая процедура Объявление переменных ПЛОЩАДЬ ДЛИНА ВЫСОТА Присвоение значений переменным формула вызова функции Sq конец процедуры Объявление функции Sq с аргументами Присвоение функции Sqрезультата вычисления Конец функции

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

Условный оператор If. Оператор может использоваться в двух нотациях: в виде простой и блочной структур.

Оператор простой структуры имеет следующий формат записи:

If <выражение> Then <оператор>

Данный оператор обеспечивает проверку выражения (условия). Если условие истинно (True), выполняется простой или составной оператор, следующий за словом Then; если условие ложно (False), управление передается следующему за If оператору.

Составной оператор - последовательность операторов одной строки, разделенных знаком: (двоеточие).

При построении выражения с помощью операторов логического сравнения следует обеспечить однотипность сравниваемых величин.

If MaxPrice > 23,000.00$ Then MaxPrice=23,500.00$

If Student_Card(100).FullName Like "Пе*" Then number=Sludent_Card (100).Group

При построении выражений используют специальные функции логических проверок VBA.

Логические выражения могут быть построены с помощью стандартных логических функций:

Функция Описание   Функция Описание
Not And Or Инверсия или отрицание Логическое "И" Логическое "ИЛИ"   Xor Imp Eqv Исключающее "Или" Импликация Эквивалентность

Оператор If блочной структуры имеет дополнения:

If <выражение 1 > Then <блок операторов 1>

ЕlseIf <выражсние2> Then

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

ElseIf <выражение3> Then

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

[Else

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

End If

Последовательно выполняется проверка истинности выражений. Если выражение1 истинно, выполняется блок операторов1, иначе выполняется проверка истинности выражения2 и т.д.

Если ни одно из выражений не соответствует требованиям истинности, выполняется блок операторов Else, если оно имеется, иначе - оператор, следующий за End If.

Пример 19.23. Организация проверки условия блочной структурой оператора If

Текст программы Комментарий
If AvgPrice >12000 Then DiffPrice=Full(234, 45600) Проверка условия 1 Если условие 1 истинно, вызов процедуры
ElseIf AvgPrice > 24000 Then DiffPrice=Full (12000, 45000) ElseIf AvgPrice > 36000 Then DiffPrice=Full (24000, 50000) Else DiffPrice=Full (36000, 70000) End If Проверка условия 2 Если условие 2 истинно, вызов процедуры Проверка условия 3 Если условие 3 истинно, вызов процедуры Если условие 1-3 не выполняются, Вызов процедуры Конец блока If

Оператор выборки Select Case. Данный оператор применяется в том случае, если во всех логических условиях участвует одна и та же величина (переменная):

Select Case <величина>

Case <сравнение 1>

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

Case <сравнение2>

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

[ Case Else

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

End Case

Выражение для сравнения может быть записано в виде: Case 45 или Case 3, 4, 5, или Case 5 То 12.

Если ни одно из сравнений не является истинным, выполняется блок операторов Else, если блок Else отсутствует, управление передается оператору, следующему за End Case.

Пример 19.24. Организация последовательной проверки значения переменной

Текст программы Комментарий
Select CDemse Начало работы оператора Select, объявление имени переменной, для которой выполняются последующие проверки-Demse
Case Demse 21 Первое сравнение
Dem=21 Если первое сравнение истинно, выполняется оператор присваивания
Case Demse 22; 25; 28 Второе сравнение- указан список возможных значений
Dem=31 Если второе сравнение истинно, выполняется оператор присваивания
Case Demse 45 To 48 Третье сравнение истинно, выполняется оператор присваивания
Case Else Если не выполнилось ни одно из указанных сравнений
Dem=51 Выполняется присваивание
End Case Конец оператора Select

Оператор цикла For-Next. Данный оператор относится к категории вычисляемых циклов, когда известно заранее число повторений цикла, заданы начальное, конечное значения и шаг (приращение) изменения начального значения, т.е.:

Для каждого значения переменной этого цикла выполняется блок операторов, расположенных до ключевого слова Next. Затем происходит изменение переменной цикла (увеличение значения на шаг), проверяется полученное значение (не более указанного конечного значения) и повторяется выполнение блока операторов.

Если переменная цикла превысила значение конец, управление передается оператору, следующему за фразой Next.

В теле цикла может присутствовать оператор Exit For. При выполнении этого оператора прекращается цикл и управление также передается оператору, следующему за фразой Next. Цикл For-Next может быть вложенным.

Пример 19.25. Организация циклов с использованием счетчика повторений

Текст программы Комментарий
Sub stickRandom() Объявление имени процедуры
Dim numrows As Integer; numcols As Integer Dim therow As Integer; thecol As Integer Объявление переменных
numrows=Selection.Rows.Count Определение числа строк в выделенном блоке ячеек
numcols= Selection.Columns.Count Определение числа столбцов в выделенном блоке ячеек
Debug.Print numrows; numcols Печать числа строк и столбцов в выделенном блоке ячеек
Randomize Генератор случайных чисел
Debug.Print Rnd Печать случайного числа
For therow=1 To numrows Внешний цикл по числу строк в блоке ячеек
For thecol=1 To numcols Внутренний цикл по числу столбцов в блоке ячеек
Selection.Cell(therow; thecol).Value=Rnd Присваивание текущей ячейке случайного числа Selection-выбор ячейки Cell-метод доступа к ячейке с определенными координатами Value - свойство "значение"
Next thecol Конец внутреннего цикла
Next therow Конец внешнего цикла
End Sub Конец процедуры

Цикл Do-Loop. Логически управляемый цикл, оператор Do Loop - конец цикла; имеет 4 модификации:

1) условие True в начале цикла

Do While <условие>

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

Exit Do

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

Loop

Цикл выполняется до тех пор, пока истинно <условие>. Минимальное число повторений тела цикла - 0. Оператор Exit Do предназначен для прекращения цикла и передачи управления оператору Loop -конец цикла.

2) условие True в конце цикла

Do

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

Exit Do

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

Loop While <условие>

Цикл выполняется хотя бы один раз, в конце выполняется проверка <условия>.

3) условие False в начале цикла

Do Until <условие>

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

Exit Do

<6лок операторов>

Loop

Until указывает, что цикл выполняется до тех пор, пока <условие> не станет истинным. Минимальное число повторений тела цикла - 0.

4) условие False в конце цикла

Do

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

Exit Do

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

Loop Until <условие>

Условие проверяется в конце, цикл прекращается, когда условие станет истинным. Минимальное число повторений тела цикла - 1.

Пример 19.26. Выполнение логически прерываемых циклов

Текст программы Комментарий
Option Explicit Обязательность объявления всех переменных перед их использованием
Sub Do_Rnd() Объявление имени процедуры без параметров
Dim a As Single Dim i As Integer, Объявление переменных
Randomize Вызова генератора случайных чисел
Do While True Начало цикла Do. Задание условия выполнение цикла- цикл бесконечный
a=Rnd Присвоение переменной случайных чисел
Debug.Print a Печать случайного числа
If a>0.99 Then Exit Do Блок условия - при его выполнении выход из цикла
Loop Конец цикла
End Sub Конец процедуры

Цикл While-Wend. Данный оператор полностью соответствует структуре Do While-Loop. Отличительной особенностью оператора является невозможность прервать выполнение цикла из тела цикла (Exit Do отсутствует), проверка условия выполняется только в начале цикла.

While <условие>

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

Wend

ЦиклFor Each. Оператор относится к категории операторов объектного типа, т.е. применяется к массивам (элементам) и наборам объектов. Выполняется фиксированное число раз, число объектов в наборе определяется автоматически. Упорядочение элементов набора - произвольное.

For Each <элемент> In <набор>

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

Exit For

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

где <элемент> представляет собой переменную типа Variant, <набор> - определенный набор объектов. Для прерывания цикла используется оператор Exit For.

<== предыдущая лекция | следующая лекция ==>
Встроенные функции VBA | Открытие файла. VBA работает с хранимыми на диске файлами двух типов: последовательного и произвольного доступа
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 294; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.