Процедуры и функции
Процедура – это сгруппированный и логически законченный набор операторов VBA. Процедуры могут быть открытыми (доступны во всех модулях проекта, описание начинается ключевым словом Public) и закрытыми (доступны только внутри того модуля, в котором описаны, описание начинается ключевым словом Private). Если тип процедуры не указан, то она считается открытой.
Описание процедуры:
Private(Public) Sub имя_процедуры (параметры)
….операторы
End Sub
Функции предназначены для вычислений.
Описание функций:
Private(Public) Function имя_функции (параметры) [As тип]
….операторы
End Sub
Структура языка VBA.
Язык VBA включает в себя следующие элементы: константы, переменные, операторы, функции, процедуры.
Имена создаваемым элементам пользователь присваивает сам, при этом имя должно удовлетворять следующим правилам:
-длина имени не может быть больше, чем 255 символов;
-имя не может содержать точек, пробелов, символов % &! # @ $;
-имя может представлять собой любую комбинацию букв, цифр и не запрещенных символов, но начинаться должно с буквы;
-имена должны быть уникальны внутри той области, в которой они оп-ределены;
-имя не должно совпадать с именами встроенных в Excel (или другое приложение MS Office) функций и процедур.
Переменные служат для хранения данных. Можно использовать переменные следующих типов:
Таблица 1. Типы переменных VBA.
Тип | Описание данных | Диапазон допустимых значений |
Byte | положительное целое число | от 0 до 255 |
Integer | целое число | от -32 768 до 32 767 |
Long | длинное целое число | от ~-2млрд до ~2млрд |
Single | вещественное число | от-3,402823Е38 до -1,401298Е-45 (отр. числа) от 1,401298Е-45 до 3,402823Е38 (полож. числа) |
Double | вещественное число двойной точности | от-1,7977E308 до -4,9407Е-324 (отр. числа) от 4,9407Е-324 до1,7977E308 (полож. числа) |
String | строка символов | от 0 до ~2 млрд символов |
Boolean | логический | True (истина) или False (ложь) |
Date | дата | от 1 января 100 года до 31 декабря 9999 года |
Currency | денежный | от~-9*10 до -9*10 до 4-х символов после запятой |
Variant | может содержать данные любого типа | Используется по умолчанию |
Не обязательно, но желательно всегда описывать типы используемых переменных. Это делает программу более понятной и сокращает время на определение типа переменной. Если переменная не описана, то она автоматически считается типа Variant. Переменную можно описывать в любом месте программы до ее использования, но лучше все переменные описать в начале программы. Если переменная описана на уровне модуля, то она доступна для всех форм, процедур и функций модуля. Если переменная описана на уровне процедуры, то она доступна только в этой процедуре.
Описание переменных производится при помощи оператора Dim:
Dim Имя-переменной As Тип-переменной
Например:
Dim x As Currency - описывает переменную x денежного формата;
Dim I As Integer, J As Integer - описывает переменные I, J как целые числа.
Операции VBA позволяют выполнять различные действия над данными. Различают математические операции, операции отношения (результатом таких операций может быть только одно из двух значений: «True» - верно, истинно, или «False» - неверно, ложно; например, результатом операции сравнения 3<5 будет значение «True»), логические операции (используются в операторах проверки условий). VBA выполняет операции в соответствии с их приоритетом.
Таблица 2. Наиболее часто используемые операции VBA.
Математические операции | |
[операнд 1] + [операнд2] | сложение |
[операнд 1] - [операнд2] | вычитание |
- [операнд] | перемена знака |
[операнд 1] * [операнд2] | умножение |
[операнд 1] / [операнд2] | деление |
[операнд 1] ^ [операнд2] | возведение в степень |
[операнд1] Mod [операнд2] | остаток от деления по модулю |
Операции отношения | |
[операнд 1] < [операнд2] | меньше |
[операнд 1] > [операнд2] | больше |
[операнд 1] = [операнд2] | равно |
[операнд 1] <= [операнд2] | меньше или равно |
[операнд 1] >=[операнд2] | больше или равно |
[операнд 1] <> [операнд2] | не равно |
Логические операции | |
[операнд1] And [операнд2] | Выражение истинно (true), если истинны оба операнда |
[операнд1] Or [операнд2] | Выражение истинно, если значение «True» имеет хотя бы один из операндов |
Not [операнд] | Выражение истинно, если операнд имеет значение «False» (Ложно) |
Операторы
Оператор присваивания имеет следующую структуру: ИмяПеременной = Выражение
Например:
y=x*500 (значение переменной х умножается на 500, результат присваивается переменной у);
z=z^10 (значение переменной z возводится в десятую степень, результат вычисления присваивается переменной z, исходное значение переменной z теряется);
Range(“A1”)=300 (в ячейку А1 текущего листа рабочей книги записывается значение «300»).
Функции позволяют использовать уже готовые алгоритмы, что существенно упрощает программирование. При вызове функций в скобках указываются параметры, причем между именем функции и скобкой не должно быть пробелов. Например, чтобы переменной х присвоить значение квадратного корня от переменной у, нужно записать: x=sqr(y).