Инструкция Dim предназначена для описания типа данных переменной на уровне модуля или процедуры. Например, следующая инструкция описывает переменную с типом Integer.
Dim N As Integer
Инструкция Dim предназначена также для описания объектного типа переменных. Далее приводится описание переменной для нового экземпляра рабочего листа.
Dim X Аs New Worksheet
Если при описании объектной переменной не используется ключевое слово New то для использования объекта, на который ссылается переменная, существующий объект должен быть присвоен переменной с помощью инструкции Set.
Если тип данных или тип объекта не задан, и в модуле отсутствует инструкция DefТип, по умолчанию переменная получает тип Variant. Для обязательного описания всех переменных надо поместить в начале модуля инструкцию Оption Explicit. Использование этой инструкции полезно при отладке программ, т. к. она позволяет легче отслеживать возможную путаницу в именах при наборе программы.
3.2.1 Допустимые имена
В VBA пользователь определяет имена переменных, функций, процедур, типов, постоянных и других объектов. Вводимые пользователем имена должны отражать суть обозначаемого объекта так, чтобы делать программу легко читаемой. В VBA имеются следующие ограничения на имена:
1. Длина имени не должна превышать 255 символов.
2. Имя не может содержать точек, пробелов и следующих символов: % , & , !, #.©, $.
3. Имя может содержать любую комбинацию букв, цифр и символов, начинающуюся с буквы.
4. Имена должны быть уникальны внутри области, в которой они определены.
5. Не следует использовать имена, совпадающие с ключевыми словами VBA и именами встроенных функций и процедур.
Хотя регистр букв (верхний или нижний) в имени не имеет значения, умелое использование его может существенно облегчить понимание содержательной стороны переменной
3.3 Константы
Константы, в отличие от переменных, не могут изменять свои значения. Использование констант делает программы легче читаемыми и позволяет проще вносить исправления отпадает необходимость многократно исправлять значения по тексту программы, т. к. достаточно ввести новое значение при определении константы. Синтаксис:
[Public | Private] Const ИмяКонстанты [As Тип] = Выражение
Аргументы:
Public | Ключевое слово, используемое на уровне модуля для описания констант, доступных всем процедурам во всех модулях. Не допускается в процедурах. |
Private | Ключевое слово, используемое на уровне модуля для описания констант, доступных только внутри модуля, в котором выполняется описание. Не допускается в процедурах. |
ИмяКонстанты | Имя константы, удовлетворяющее стандартным правилам именования переменных |
Тип | Один из поддерживаемых типов данных: Byte, Boolean,Integer, Long, Currency, Single, Double. Decimal (в настоящее время не поддерживается), Date, String или Variant. Для каждой описываемой константы следует использовать отдельное предложение as тип |
Выражение | Литерал, другая константа или любое сочетание, которое включает все арифметические или логические операторы, за исключением Is |
Пример:
Const ПроцентнаяСтавка As Single = 0.2
Const Фирма = "ООО Бескрайние просторы"
Работая с программой, удобно использовать комментарии, т. е. фрагменты текста программы, не являющиеся программными кодами и игнорируемые компилятором. Комментарии выполняют две важные функции:
1. Делают программу легко читаемой, поясняя смысл программных кодов и алгоритма.
2. Временно отключают фрагменты программы при ее отладке.
В языке VBA существуют два способа ввода комментариев:
Применение апострофа ('). Его можно ставить в любом месте строки. При этом все символы, начиная от апострофа до конца строки, будут восприниматься компилятором как комментарий.
Применение зарезервированного слова Rem вместо апострофа.
Ниже приведен пример использования комментариев в тексте программы:
Dim a As Integer
' а – целая переменная
Dim b As String ' b – строковая переменная
4. Операции VBA
В программах на VBA можно использовать стандартный набор операций над данными. Имеются три основных типа операций:
Математические, выполняются над числами, и их результатом являются числа.
Отношения, применяются не только к числам, и их результатом являются логические значения, например х>у.
Логические, используются в логических выражениях и их результатом являются логические значения, например Not x And у.
Приведем операции VBA указанных и дополнительных категорий.
4.1 Математические операции
[Операнд1] + [Операнд2] | Сложение |
[Операнд1] - [Операнд2] | Вычитание |
- [Операнд] | Перемена знака |
[Операнд1] * [Операнд2] [Операнд1] / [Операнд2] | Умножение Деление |
[Операнд1] \ [Операнд2] | Целочисленное деление |
[Операнд1] Mod [Операнд2] | Остаток от деления по модулю |
[Операнд1] ^ [Операнд2] | Возведение в степень |
4.2 Операции отношения
[Операнд1]< [Операнд2] | Меньше |
[Операнд1]> [Операнд2] | Больше |
[Операнд1]<= [Операнд2] | Меньше или равно |
[Операнд1]>= [Операнд2] | Больше или равно |
[Операнд1] <> [Операнд2] | Не равно |
[Операнд1] = [Операнд2] | Равно |
[Операнд1] Is [Операнд2] | Сравнение двух операндов, содержащих ссылки на объекты |
[Операнд1] Like [Операнд2] | Сравнение двух строковых выражений |
4.3 Логические операции
[Операнд1] And [Операнд2] | Логическое умножение |
[[Операнд1] Or [Операнд2] | Логическое сложение |
[Операнд1] Хоr [Операнд2] | Исключающее or (или) |
Not [Операнд2] | Логическое отрицание |
4.4 Операции со строками
[Строка1] & [Строка2] | Сложение строк. Для сложения строк допустимо использование операции [Cтрока1 +[Строка2], но предпочтительнее, во избежание путаницы, применять операцию со знаком & |
4.5 Приоритеты операций
VBA выполняет операции в соответствии с их приоритетами, что обеспечивает однозначность в трактовании значений выражений. Приведем приоритеты выполнения операций.
Приоритет | Операция |
1 | Вызов функции и скобки |
2 | ^ |
3 | - (смена знака) |
4 | *, / |
5 | \ |
6 | Mod |
7 | +, - |
8 | >, <, >=, <=, <>,= |
9 | Not |
10 | And |
11 | Or |
4.6 Встроенные функции VBA
В VBA имеется большой набор встроенных функций и процедур, использование которых существенно упрощает программирование.
Эти функции можно разделить на следующие основные категории:
Математические функции
Функции проверки типов
Функции преобразования форматов
Функции обработки строк
Функции времени и даты
Ниже рассмотрены основные функции из этих категорий.
Математические функции
В VBA имеется большой список математических функций, позволяющих произвести любые вычисления.
Функция | Возвращаемое значение |
Abs (число) | Модуль (абсолютная величина) |
Atn (число) | Арктангенс |
Cos (число) | Косинус |
Exp (число) | Экспонента, т. е. результат возведения основания натурального логарифма в указанную степень |
Log (число) | Натуральный логарифм |
Rnd (число) | Случайное число из интервала [0,1).Если число меньше нуля, то Rnd возвращает каждый раз одно и то же число, используя аргумент в качестве опорного числа; если число больше нуля или аргумент опущен, то следующее случайное число в последовательности; если число равняется нулю, то случайное число, возвращенное при предыдущем вызове этой функции.Перед вызовом функции Rnd используйте инструкцию Randomize без аргумента |
Sgn (число) | Знак числа |
Sin (число) | Синус |
Sqr (число) | Квадратный корень из числа |
Tan (число) | Тангенс |
Fix (число) и Int (число) | Обе функции, Int и Fix, отбрасывают дробную часть числа и возвращают целое значение.Различие между функциями Int и Fix состоит в том, что для отрицательного значения аргумента число функция Int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, a Fix ближайшее отрицательное целое число, большее либо равное указанному |
4.7 Функции преобразования форматов
Преобразование строки в число и обратно осуществляют следующими функциями.
Val (строка) | Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа |
Str (число) | Возвращает значение типа variant (string), являющееся строковым представлением числа |
В качестве допустимого десятичного разделителя функция str воспринимает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию cstr.