Е. А. Рябухина, О. А. Гущина, Д. А. Губанов, Д. В. Емельянов
Скачать 3.08 Mb.
|
4. Область действия переменных Любая переменная имеет свою область действия. Термин область действия относится к области процедуры или модуля VBA, где данная переменная, процедура или другой идентификатор, являются доступными. Переменные, процедуры и идентификаторы, которые доступны только в процедуре, имеют область действия процедурного уровня, а те, которые доступны для всех процедур в модуле, имеют область действия модульного уровня. Рис. 1. Листинг №1 программы Область в начале модуля перед любыми объявлениями процедур называют областью объявлений модуля, потому что именно туда следует помещать объявления переменных модульного уровня и другие директивы VBA, влияющие на весь модуль. В первой строке, приведенного выше листинга (рис. 1), объявлена переменная А модульного типа. Однако в процедуре example_02 имеется свое объявление переменной А. VBA выбирает наиболее локальную переменную А, объявленную как переменная процедурного уровня. Переменные процедурного уровня часто называют локальными переменными, потому что их объявления являются локальными для выполняемой в данный момент процедуры. Рис. 2. Листинг №2 программы В настройках редактора VBA можно указать, чтобы команда Option Explicit (рис. 2) автоматически включалась в новый модуль (рис. 3). Рис. 3. Настройки редактора VBA 5. Константы VBA Константа – это значение в программе VBA, которое не изменяется. Во многих случаях константы удобно описывать в начале программы в виде Const С1 As Тип1= Z1 ,… CN As ТипN = ZN Здесь C – любое допустимое имя константы; Тип – тип константы, Z – ее значение соответственно типу. Например: Const A As Byte=7, K As Single=100.79 Если константа описана без указания типа, то по умолчанию она принимает более общий тип. Так, если описание констант имеет вид: Const p = 5, Const L As Byte = 17 то константа Р будет иметь тип Integer, а константа L – тип Byte. Область действия именных констант аналогична переменным, т.е. константы бывают процедурного и модульного уровня. Поскольку одной из главных целей использования именованной константы является предотвращение повторения или дублирования литеральных констант, как правило, бывает необходимо, чтобы именованные константы были доступны всем процедурам в модуле. Поэтому целесообразно помещать объявления констант на модульном уровне, чтобы у них была наибольшая область действия. 6. Внутренние константы Внутренняя константа – это именованная константа, которая была определена разработчиками VBA. Например, для вычисления числа используется константа Pi (рис. 4). Рис. 4. Листинг №3 программы Помимо внутренних констант VBA существуют внутренние константы для работы с host-приложениями. Так, Excel содержит внутренние константы для использования с рабочими книгами электронных таблиц. Аналогично, Word содержит внутренние константы для работы с документами и шаблонами текстового редактора, а Access – для операций с базами данных. Внутренние константы, определяемые VBA, начинаются с букв vb. Внутренние константы Excel – xl; Word – wd. Внутренние константы, определяемые host-приложением VBA (например, Excel, Word) упрощают использование различных свойств и методов, принадлежащих этому host-приложению. Для того, чтобы увидеть полный список имеющихся в наличии внутренних констант необходимо использовать Object Browser. Его можно вызвать клавишей F2 в окне редактора VBA. Встроенные константы очень удобны при работе с группами именованных элементов (дни недели, месяцы, цвета, клавиши, типы окон и т.п.). Они позволяют использовать в коде программы легко читаемые обозначения вместо труднозапоминаемых числовых кодов. Например, строка программы UserForm1.BackColor = vbYellow задает фон пользовательской формы с именем UserForm1 желтого цвета. 7. Стандартные функции VBA Рассмотрим сначала наиболее употребительные функции VBA – арифметические (табл. 1). Таблица 1. Арифметические функции
8. Функции проверки и преобразования типов К данной группе функций относятся: 1) функция вывода типа переменной; 2) функция преобразования типов; 3) функции проверки; 4) функция, определяющая, является ли константа записью числа. 1. Функция вывода типа переменной имеет вид: Vartype(V), где V – имя переменной. Результатом функции Vartype является тип переменной V. Возможные результаты функции Vartype приведены в табл. 2. Таблица 2 Возможные результаты функции Vartype
2. Функции преобразования типов используются, как правило, если данные вводятся в текстовые поля форм (см. далее) или ввод данных происходит с помощью функции InputBox. Функции преобразования приведены в табл. 3. Таблица 3 Функции преобразования с помощью функции InputBox
3. Функции проверки определяют, относится ли переменная к указанному типу данных. К данным функциям относятся функции, приведенные в табл. 4. Таблица 4 Функции проверки
4. Наибольший интерес пока что представляет функция IsNumeric, которая определяет, является ли константа записью числа. Пример:
В результате выполнения фрагмента программы переменная Rez1 примет значение True, а переменная Rez2 – значение False. Функцию IsEmpty можно применить, например, для определения пустой ячейки Microsoft Excel: B=IsEmpty (Cells(1, 1)) Если в ячейку А1 не были записаны какие-либо данные, то функция вернет значение True, иначе False. В вычислениях можно использовать встроенные функции Microsoft Excel. В этом случае ссылка на встроенную функцию имеет вид: V = Application.WorksheetFunction.Функция (Аргумент) Здесь Функция – конкретная функция из списка функций, Аргумент – переменная, константа или ячейка, в которую записано значение. Пример вычисление длины окружности: S=2*Application.WorksheetFunction.PI()*R Допустимо записывать выражение в виде: S=2*WorksheetFunction.PI()*R Пример использование функций логарифмов: Cells(5, 1) = WorksheetFunction.Log10(120) Здесь вычисляется десятичный логарифм числа 120. Cells(6, 1) = WorksheetFunction.Log(10, 4) Здесь вычисляется логарифм числа 10 по основанию 4. 9. Арифметические выражения VBA Совместимость типов данных VBA в выражениях Арифметические выражения состоят из констант, переменных, элементов массивов, стандартных функции и знаков арифметических действий. В арифметических выражениях используются следующие знаки арифметических действий: + (сложение), - (вычитание), * (сложение), / (деление вещественных чисел), ^ (возведение в степень), \ (целочисленное деление, имеющее результатом целую часть частного), mod (остаток от деления). Порядок выполнения арифметических выражений следующий: возведение в степень; умножение и деление в порядке следования; целочисленное деление; вычисление остатка; сложение и вычитание в порядке следования. Если в выражении присутствует стандартная функция, то в первую очередь вычисляется ее значение. Порядок вычислений можно изменить с помощью скобок (). Примеры: 14/5*2=2,8 14\5*2=14\10=1 9^1/2=4,5 9^(1/2)=3 10 mod 4=2 Все выражения имеют результатом одно значение, имеющее один из типов данных, рассмотренных выше. Выражения могут также иметь результатом одно из специальных значений Empty или Null. Не все типы данных совместимы друг с другом, и нельзя использовать несовместимые типы данных в одном и том же выражении. Например, нельзя произвести арифметическое сложение над числом и строкой. При обработке выражения, содержащего различные типы данных, VBA сначала пытается устранить любое различие типов, преобразуя значения в выражении в совместимые типы данных. Если устранить какие-либо различия преобразованием типов не удается, действие прекращает выполняться. VBA преобразует численные типы данных в выражении в тип наибольшей точности, который затем дает результату выражения. Например, если операндами выражения являются числа 10 (Integer) и 20.89 (Single) – результат выражения будет иметь тип Single. Но если переменной типа Integer попытаться присвоить численное выражение типа Single, то VBA произведет округление до необходимой точности что может привести к ошибкам выполнения программы. Например, если описать переменную h, имеющую значение 0.3, типом Integer, то значение автоматически округлится до нуля. Кроме того, в выражениях возможны неочевидные ошибки типа. Пример: Dim a As single, I As Byte, j As Byte I=1 J=3 A=i-j Результатом переменной А будет отрицательное число, которое не может относиться к типу Byte. Несмотря на то, что переменная А описана типом, позволяющим определить отрицательное число, появится сообщение об ошибке. 10. Оператор присваивания (=) Оператор присваивания используется для присваивания результата выражения переменной. Оператор присваивания имеет вид: V = выражение Здесь V – любая переменная VBA, выражение – любое выражение VBA, знак = означает присваивание. Внимание! В результате указанного оператора, переменной V присваивается значение выражения, не путать с проверкой условия-равенства! При выполнении оператора присваивания VBA сначала вычисляет выражение справа от оператора присваивания, а затем сохраняет результат выражения в переменной, имя которой находится слева от знака равенства. X = 5 + 7 Y = X + 5 Z = X – Y A = B I = I + 2 Поясним последний пример. В результате выполнения указанного оператора, переменной I присваивается значение, составляющее сумму двух чисел: числа 2 и значения, которое переменная I имела перед выполнением оператора присваивания. Например, в результате выполнения двух операторов A=5 A=A+7 переменная А будет содержать значение 12 (5+7). |