Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций.pdf
Скачиваний:
53
Добавлен:
29.02.2016
Размер:
1.58 Mб
Скачать

=-равно; <>-не равно; >-больше; <-меньше;

>= - больше или равно; <= - меньше или равно.

Для округления вещественных чисел вVBA теперь есть функция: Round (х,п), где х - само число, a n - количество знаков после запятой.

Операторы присваивания

Операторы присваивания служат для изменения значения переменных. В VBA существует четыре вида операторов присваивания:

Let - прямое присваивание; Lset - левое присваивание; Rset - правое присваивание; Set - объектное присваивание.

Использование ключевого слова Let необязательно, поэтому для прямого присваивания достаточно использовать оператор (=). Важно, чтобы тип присваиваемого значения совпадал с типом переменной, которой это значение присваивается.

Управляющие конструкции

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

Ветвления

Управляющие конструкции ветвления позволяют проверить некоторое условие, а затем в зависимости от результатов этой проверки выполнить ту или иную группу операторов. Для организации ветвлений в VBA используются стандартный оператор ветвления If... Then ... Else и оператор выбора Select Case.

Оператор ветвления If ... Then ... Else имеет несколько форм представления:

Форма 1:

If <условие > Then < оператор > —

краткая форма в одну строку.

Форма 2:

В блочной форме краткое ветвление выглядит следующим образом:

If <усповие > Then

<оператор 1>

<оператор 2>

End If

В качестве условия можно использовать логическое выражение, возвращающее значение True { Истина) или False {Ложь), или любое арифметическое выражение. Если используется арифметическое выражение, то нулевое значение этого выражения эквивалентно логическому значениюFalse, а любое ненулевое выражение эквивалентно True.

Если <условие > принимает значение False, то ни один из операторов, заключенных между Then и End If, выполняться не будет.

Форма 3:

If <условие > Then

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

Else

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

End If

Если <условие > истинно, то выполняется <6локОператоров1>. В противном случае выполняется

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

При простом ветвлении бывает удобно использовать функцию Iif:

Iif(<выражение>,<значениеЕслиДа>,<значениеЕслиНет>)

Функция Iif является встроенной функцией и, как всякая функция, используется в выражении. Таким образом, функцию Iif удобно применять, когда ветвление требуется в программе не для того, чтобы выбрать ту или иную альтернативную последовательность действий, а для присвоения того или иного альтернативного значения.

Форма 4:

67

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

If <условие1 > Then

<блокОператоров1> Elself <условие2 > Then

<блокОператоров2> Elself <условиеЗ > Then

<блокОператоровЗ> Elself <условиеN > Then

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

Else

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

End If

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

Select Case <проверяемоеВыражение > Case <списокВыражений1>

<блокОператоров1> Case <списокВыражений2> <блокОператоров2>

Case Else

<блокОператоровЕIse> End Select

Проверяемое выражение вычисляется в начале работы оператораSelect Case. Это выражение может возвращать значение любого типа, например, логическое, числовое или строковое. Список выражений представляет собой одно или несколько выражений, разделенных запятой. При выполнении оператора проверяется, соответствует ли хотя бы один из элементов этого списка проверяемому значению. Эти элементы списка выражений могут иметь одну из следующих форм:

-<выражение>- проверяется, совпадает ли значение проверяемого значения с этим выражением;

-<выражение1>То< выражение2>- проверяется, находится ли значение проверяемого выражения в указанном диапазоне значений;

-Is< логическийОператор><выражение>- проверяемое выражение сравнивается с указанным значением с помощью логического оператора, например, условие Is <= 19 считается выполненным, если проверяемое значение не больше 19.

Если хотя бы один из элементов списка соответствует проверяемому выражению, выполняется соответствующая группа операторов, и на этом выполнение оператораSelect Case заканчивается, а остальные элементы списка выражений не проверяются, то есть отыскивается только первый подходящий элемент списка выражений.

Циклы Операторы цикла в языке программирования позволяют описывать многократное выполнение

одного оператора или группы операторов.

Операторы цикла в VBA можно разделить натри группы:

-циклы с условием (Do ... Loop);

-циклы со счетчиком (For... Next);

-циклы по структуре данных (For Each ... Next).

Циклы типа Do ... Loop используются, когда заранее неизвестно, сколько раз должно быть повторено выполнение блока операторов. Такой цикл продолжает свою работу до тех пор, пока не будет выполнено определенное условие. Существуют четыре вида цикловDo ... Loop, которые различаются типом проверяемого условия и временем выполнения этой проверки. Синтаксис этих четырехконструкций приведен в таблице

Синтаксис операторов циклов Do ... Loop

68

Частным случаем оператора Do... Loop является оператор While... Wend:

While <условие>

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

Wend

<6локОператоров> выполняется, пока<условие> истинно.

Цикл со счетчиком For ... Next обычно используется при обработке массивов, а также когда требуется повторить выполнение некоторой группы операторов заданное число раз. В отличие от циклов Do ...

Loop данный тип цикла использует специальную переменную, называемую счетчиком, значение которой увеличивается или уменьшается при каждом выполнении тела цикла на заданную величину. Когда значение этой переменной достигает заданного конечного значения, выполнение цикла заканчивается.

Синтаксис этого вида цикла таков:

For <счетчик> = <начальноеЗначение> То <конечноеЗначение> [Step <приращение>] <6локОператоров>

Next [<счетчик>]

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

После завершения цикла For ... Next переменная, которая использовалась в качестве счетчика, получает значение, обязательно превосходящее конечное значение, если приращение положительно, и строго меньше конечного значения, если приращение отрицательно. При совпадении начального и конечного значений тело цикла выполняется лишь один раз.

Процедуры VBA

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

Sub <имяПроцедуры> (<аргумент1>,<аргумент2>,...) <оператор1> <оператор2>

End Sub

Список аргументов у процедуры может отсутствовать и может иметь необязательные аргументы.

Описание подпрограммы-функции мало чем отличается от описания процедуры-подпрограммы:

Function <имяФункции>(<аргумент1>,<аргумент2>,...) [As <типЗначения>] <оператор1>

69