
- •Операции в языке Visual Basic
- •Арифметические операции
- •Операции сравнения
- •Операция конкатенации
- •Логические операции
- •Логические операции
- •Старшинство операций
- •Приоритет операций
- •Макросы и процедуры
- •Процедуры-функции
- •Отладка функций, созданных пользователем
- •Использование Мастера функций
- •Процедуры - подпрограммы
- •Инструкции vba
- •Продолжение инструкций на несколько строк
- •Комментарии
- •Инструкции описания
- •Инструкция Dim
- •Инструкция Private
- •Инструкция Static
- •Инструкция Option Explicit
- •Инструкция Const
- •Инструкции присвоения
- •Инструкция Let
- •Инструкция lSet
- •Инструкция Set
Старшинство операций
Итак, выражение – это комбинация ключевых слов, знаков операций, переменных и констант, результатом которой является строка, число или объект. Выражения можно использовать для выполнения вычислений, обработки символов или проверки данных.
Если выражение содержит несколько операций, то значения компонентов выражения рассчитываются в определенном порядке. Такой порядок называют порядком старшинства или приоритетом операций.
Если выражение содержит операции разных типов, то первыми выполняются арифметические, следом за ними операции сравнения, а последними – логические операции. Все операторы сравнения имеют равный приоритет, т.е. выполняются в порядке их расположения в выражении слева направо. Арифметические и логические операторы выполняются в порядке их расположения в таблице 11.
Таблица 11
Приоритет операций
Знак операции |
Комментарии |
^ |
Возведение в степень |
– |
Изменение знака |
*, / |
Умножение и деление |
\ |
Целое деление |
Mod |
Деление по модулю |
+, – |
Сложение и вычитание |
& |
Слияние строк |
>, >=, <, <=, <>, Like, Is |
Операции сравнения имеют равные приоритеты и вычисляются по мере появления в выражении слева направо |
Not |
|
And |
|
Or |
|
Xor |
|
Eqv |
|
Imp |
|
Макросы и процедуры
До сих пор в изложении материала использовался термин макрос (macro) как для макросов, которые записываются рекордером, так и для макросов, которые пишутся пользователем самостоятельно. Существует другой термин, помогающий различать эти типы макросов.
Процедура – это блок кода, заключенный между инструкциями Sub и End Sub или Function и End Function. Хотя термины макрос и процедура иногда используют как синонимы, на самом деле они обозначают разные понятия.
Процедура – термин более широкий, применимый к любому блоку кода, заключенному между Sub и End Sub или Function и End Function, а макрос – специфический термин, относящийся только к открытым процедурам Sub без параметров. Так что все макросы- процедуры, но не все процедуры – макросы. Иногда в литературе макросами называют программы, которые не имеют аргументов (так, например, записываемые рекордером макросы не могут иметь аргументов). К макросам относятся процедуры, генерируемые при записи макросов, а также все процедуры, которые можно запускать из диалогового окна Макрос любого приложения Office.
Процедуры бывают двух типов: VBA- подпрограммы и VBA- функции.
Процедуры-функции
Процедуры-функции, создаваемые на языке VBA, полностью универсальны и могут быть использованы в двух случаях:
в выражениях другой процедуры VBA;
в формулах, создаваемых в рабочих таблицах.
Фактически процедуру-функцию можно применять везде, где используются функции рабочих таблиц Excel или встроенные функции VBA. Созданные функции появляются также в Мастере функций, поэтому можно сказать, что они становятся составной частью Excel.
Excel содержит сотни готовых функций рабочих таблиц. Зачем же, имея такие богатые возможности выбора, заниматься созданием дополнительных функций? Основная причина заключается в том, что новые функции могут существенно упростить используемые на рабочем листе формулы, т.е. сделать их менее громоздкими. Более компактные формулы легче воспринимаются и, кроме того, с ними удобнее работать. Но есть и другая причина создания новых функций – они необходимы для выполнения операций, которые иначе было бы невозможно осуществить.
Общий вид функции пользователя:
Function имя_функции(список аргументов)
тело функции
имя_функции=выражение
End Function
Ключевое слово Function указывает на начало процедуры-функции, а оператор End Function – на окончание функции.
Тело функции состоит из описательной части блока операторов, выполняющихся один за другим. Именем функции или переменной может быть любой идентификатор, определенный пользователем. Идентификатор – это последовательность букв, цифр и символа подчеркивания, начинающаяся с буквы. Пробелы внутри идентификатора недопустимы, поэтому они заменяются символом подчеркивания.
Об аргументах функции нужно помнить следующее:
аргументы могут быть переменными, константами, литералами или выражениями;
аргументы могут отсутствовать;
функция может иметь некоторое число (от 1 до 60) обязательных аргументов;
в некоторых функциях могут быть как обязательные, так и необязательные аргументы.
Носителем возвращаемого значения функции пользователя является имя функции. Поэтому в теле функции пользователя, вычисляющей некоторое значение, должен присутствовать, по крайней мере, один оператор, присваивающий имени функции значение какого-либо выражения.
Рассмотрим функцию, вычисляющую значение Y=sinx+x*e-x.
Function Y(x)
Y=sin(x)+x*exp(-x)
End Function
Если в ячейку А1 введено число 0.2, а в ячейке В1 необходимо вычислить значение указанной функции при данном значении, то в ячейку В1 следует ввести формулу =Y(A1).
Создавая функцию, нужно четко представлять себе ее возможности. Существуют действия, которые функция выполнить не может. Например, нельзя создать функцию, изменяющую атрибуты форматирования ячейки. Другими словами, функции, по своей сути, - это лишь пассивные процедуры, которые возвращают значение. При попытке выполнить недопустимое действие, функция возвращает ошибку.