Файл: Е. А. Рябухина, О. А. Гущина, Д. А. Губанов, Д. В. Емельянов.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 01.12.2023

Просмотров: 92

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
T.

Когда VBA создает новую переменную, эта переменная инициализируется (переменной присваивается некоторое значение «по умолчанию»):

– строки инициализируются пустыми строками;

– числа – значением 0;

– переменные типа BooleanFalse;

– даты – 30 декабря 1899.

Переменную можно объявлять только один раз в отдельной процедуре или модуле. Фактически переменные можно объявлять в любом месте кода. Однако в практике программирования принято собирать все явные объявления переменных в одном месте, как правило, в начале процедуры.

После объявления типизированной переменной, независимо от того, объявляется ли эта переменная явно или неявно, и как задается ее тип, эта переменная сохраняет тот же самый тип столько времени, сколько она существует. Нельзя переобъявлять переменную или переопределять ее тип.

Кроме оператора Dim тип переменных можно определить следующими способами:

– с помощью суффиксов;

– с помощью префиксов;

– c помощью оператора DefТype.

С помощью суффикса переменная описывается в виде:

Name% – целый тип Integer;

Name& – тип Long;

Name@ – тип Currency;

Name! – тип Single;

Name# – тип Double;

Name$ – тип String.

Здесь Name – имя переменной.

Например, A$ – строковая переменная, Sum! – вещественная переменная типа Single, B1% – переменная типа Integer.

При использовании суффикса достаточно указать его только при первом обращении к переменной.

Пример:

Sub p()

W%=1

W=W+5

End Sub


При использовании префикса переменная описывается в виде PrefName, где Pref – префикс, Name – имя переменной.

Префиксы имеют следующий вид:

bln – тип Boolean;

byt – тип Byte;

cur – тип Currency;

int – тип Integer;

sng – тип Single;

dbl – тип Double;

lng – тип Long;

str – тип String;

dtm – тип Дата/Время;

vnt – тип Variant

Например, переменная intK будет иметь тип Integer, а переменная sngD – тип Single. В отличие от суффиксов, переменная с префиксом требует постоянного указания префикса на протяжении программы.

Пример:

Sub p()

IntW=1

W=W+5

EndSub



Так, в результате выполнения фрагмента программы переменная W примет значение не 6, а 5, поскольку при обращении к переменной без префикса, она принимает значение 0.

Оператор объявления типа DefType имеет вид:

DefType буква1-букваN,…

где Type определяет тип переменных, имена которых начинаются с букв из интервала [буква1; букваN].

Параметр Type принимает следующие значения:

Int – тип Integer;

Lng – тип Long;

Byte – тип Byte;

Bool – тип Boolean;

Sng – тип Single;

Dbl– тип Double;

Str – тип String;

Date – тип Data;

Var – тип Variant.

Так, например, при использовании оператора DefintA-C,P-Sпеременные А1, ALFA, Beta, B25, CPZ, POL, Summa, Q2, Result будут относиться к типу Integer.

В настоящее время этот способ употребляется достаточно редко, поскольку он не сочетается с оператором OptionExplicit.

Таким образом, наиболее удобными способами описания переменных в одном модуле являются явный – с помощью оператора Dim и с помощью суффиксов.


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.

Арифметические функции

Запись в VBA

Функция

Abs(x)

Модуль (абсолютное значение) числа х, т.е. x

Atn(x),

Значение арктангенса от аргумента x, т.е. arctg (х)

Sin(x),

Значение синуса от аргумента x, т.е. sin (х)

Cos(x),

Значение косинуса от аргумента x, т.е. cos (х)

Tan(x),

Значение тангенса от аргумента x, т.е. tg (х)

Exp(x),

Экспонента от аргумента x, т.е. ех

Log(x),

Натуральный логарифм от аргумента x, т.е. ln(x)

Sqr(x),

Квадратный корень из x, т.е. √x

Rnd(),

Случайное число из интервала (0;1)

Int(x),

Целое число, меньше или равное х

Fix(x),

Целая часть числа х

Cint(x),

Округляет число х до целого

Sgn(x),

Знак числа х

Round(x,a)

Округление числа х до а знаков в дробной части



8. Функции проверки и преобразования типов
К данной группе функций относятся:

1) функция вывода типа переменной;

2) функция преобразования типов;

3) функции проверки;

4) функция, определяющая, является ли константа записью числа.
1. Функция вывода типа переменной имеет вид:

Vartype(V), где V – имя переменной.

Результатом функции Vartype является тип переменной V. Возможные результаты функции Vartype приведены в табл. 2.

Таблица 2

Возможные результаты функции Vartype

Результат

Тип

0

Empty

1

Null

2

Integer

3

Long

4

Single

5

Double

6

Currency

7

Date

8

String

9

Object

10

Variant

11

Boolean

17

Byte


2. Функции преобразования типов используются, как правило, если данные вводятся в текстовые поля форм (см. далее) или ввод данных происходит с помощью функции InputBox. Функции преобразования приведены в табл. 3.

Таблица 3

Функции преобразования с помощью функции InputBox

Функция

Приводит к типу

Cbool

Boolean

Cbyte

Byte

Ccur

Currency

Cdate

Date

Cdbl

Double

Cint

Integer

Clng

Long

Csng

Single

Cstr

String

Cvar

Variant


3. Функции проверки определяют, относится ли переменная к указанному типу данных.

К данным функциям относятся функции, приведенные в табл. 4.

Таблица 4