Основное назначение VBA это обработка данных. Некоторые данные могут храниться в объектах, например, диапазонах рабочих листов, а некоторые сохраняются в переменных.
Что такое переменные?
Переменная это некоторое выделенное пространство в памяти компьютера, которое может содержать данные разных типов – числовые, текстовые, логические и т.д. (о типах данных в VBA рассказано в этой статье), а так же результаты вычислений. Значение переменной присваивается с помощью знака равенства. Для удобства работы с переменными в языках программирования предусмотрена возможность задания человеко-понятных имен, к примеру, имена переменных rFIO, rBirthday. К именам переменных в VBA имеется ряд требований:
- Переменная может содержать латинские символы, числа. Использование пробела и точки в имени переменной недопустимо (вместо пробела программисты используют знак «_»);
- Имя переменной должно начинаться с текстового символа (числа в начале не допустимы);
- Не допускается использование следующих символов: #, $, %, &, !. Эти символы в VBA зарезервированы за кратким указанием типа переменной без ее описания. К примеру: содержание символа $ (MyTxt$) в конце имени переменной указывает, что значение хранимое в этой переменной текстового типа;
- Недопустимо использование зарезервированных слов. Если все ж для понимания назначения переменной необходимо использование в имени зарезервированного слова, то можно добавить некоторый символ или символы, например: Date зарезервировано (тип дата), для использования можно добавить «My», после чего получим допустимое — MyDate;
- Имя переменной не должно быть длиннее 254 символов. Но я не думаю, что кому-то придет в голову для переменной задавать имя длиннее 15-20 символов, не говоря уже о 254;
- Язык VB не чувствителен к регистру, поэтому переменные MyVar и myvar для VBA одинаковы.
Пара советов по именованию переменных. Давайте имена переменным понятные, но в тоже время короткие т.к. с длинными именами сложнее работать. VBA позволяет описывать переменные в любой области кода, что в дальнейшем, при большом кол-ве строк программного кода может вызвать затруднение с поиском и определением типа. Из своего опыта советую не лениться описывать все переменные в начале процедуры или функции, определив, таким образом, некоторый блок переменных. Можно также оставить комментарии с подробным описанием назначения переменной.
Описание переменных в VBA
Под описанием переменной подразумевается указание типа данных. В VBA переменные можно указывать явным и неявным образом. Не явным образом означает, что Вы можете в любом месте кода указать имя переменной и начать с ней работать, в таком случае тип этой переменной принимается как Variant. Такой способ удобен, но не рекомендуется т.к. может возникнуть путаница и как следствие, ошибки при вычислениях. Явное описание осуществляется после ключевого слова Dim [имя переменной] As [Тип], например: Dim MyInt As Integer. В случае такого описания переменная MyInt будет хранить в памяти только значения целого типа.
Обязательное объявление всех переменных
Как уже говорилось выше переменные в VBA можно объявить, а можно и не объявлять. Со своей стороны я рекомендую объявлять каждую переменную, используемую в программе. Это позволить сделать код более понятным, дисциплинирует, и в крупных разработках позволит сэкономить память и увеличить быстродействие при обработке данных. Для того чтоб в VBA включить обязательное объявление всех переменных необходимо в начале модуля добавить строку: Option Explicit. После, на каждой не объявленной переменной будет происходить остановка программы, и отображаться ошибка до тех пор, пока всем переменным не будет присвоен тип в разделе Dim.
Примечание: Для того чтоб в VBE (Visual Basic Editor) оператор Option Explicit вставлялся автоматически в каждый новый модуль, необходимо в настройках редактора VBE активировать данную опцию: Tools-Options…, на вкладке Editor поставить галочку «Require Variable Declaration»
Константы в VBA
Константой называется значение, хранимое в памяти, которое в процессе работы программы не изменяется. Константы используются в тех случаях, когда в коде программы используется один и тот же параметр, число, строка и т.д. Для того чтоб обеспечить удобство изменения этих параметров при необходимости, в начале кода программы описываются константы и присваивается значение. Константы объявляются с помощью оператора Const. Например:
Const MyIntConst as Integer = 8
Const MyTxtConst as String = «Константа»
или без указания типа:
Const MyConst = 4,55
в этом случае константа типа Variant.
Внимание!!! В случае если при работе программы Вы захотите изменить значение константы, программа завершится ошибкой. Поэтому будьте внимательны. Так же, не допускается совпадение имен констант и переменных. Требования к именам констант такие же, как и к переменным.
Закрепим все вышесказанное примером небольшого макроса, который рассчитает функцию y = x+i*2, где x=i/7, 0<i<100 шаг 1.
Как видно из функции y, x, i это переменные. Так как при расчетах используется деление, то y, x будут содержать значения вещественного типа. Переменная i это счетчик с шагом 1. 2 постоянное значение, т.е. константа. Результат y будет выведен в диалоговом сообщении msgBox.
Создадим в редакторе VBE новый модуль и добавим туда следующий код:
Option Explicit Sub VarExample() |
Запускаем наш макрос. В результате выполнения данной процедуры мы получим Y равное 214,2857.
На этом все. Подписывайтесь на рассылки сайта и будьте в курсе появления новых статей и уроков. До встреч!