Таблица 3.6
|
|
Строковые операции |
|
Операция |
|
Результат |
|
а |
& b |
|
"ab" |
"а" |
+ "b" |
|
"ab" |
3.3. Объявление переменных
Необходимо приступать к работе с данными, т. е. к программированию. По существу эта работа делится на две - на объявление переменных и составление процедур обработки этих переменных.
Итак, переменная - это элемент данных в программе, которому присвоено имя. Значение переменной может задаваться и изменяться программой (переменная - не константа), но - в соответствии с определенным типом данной переменной, который задается при ее объявлении. При объявлении задается имя (начинается с буквы, до 256 символов, без пробелов и специальных знаков, не совпадает с ключевыми словами) - для идентификации переменной в программе, затем объявляется ее тип (для определения возможных значений переменной и способов ее обработки), а также определяется область видимости данной переменной.
VBA поддерживает два вида объявления переменной - явное и неявное. Явное объявление простых переменных имеет следующий синтаксис:
{Dim | Private | Public | Static} _
имяПеременной [As типДанных]
[, имяПеременной [Аs типДанных] ] ...
Рассмотрим первую часть объявления - объявление области видимости переменной при помощи соответствующих операторов.
Переменные, объявленные только в процедуре, действуют в пределах процедуры. Объявление переменной на уровне модуля делает ее доступной для всех процедур модуля. При
48
этом допускается переопределение имени переменной во вложенных процедурах. Для использования переменной во всех вложенных процедурах и модулях она объявляется глобальной на уровне внешнего модуля.
Исключением из правил является объявление переменных типа Decimal. Для того чтобы объявить переменную данного типа, необходимо использование функции CDec.
Следующая часть объявления - это имя переменной. Последняя часть, необходимая при явном объявлении переменной, - указание ее типа с помощью ключевого слова AS , после которого идет ключевое слово, определяющее тип данных, например integer.
Если вы хотите продолжить объявление переменных, то просто поставьте запятую и объявляйте новую переменную согласно описанной конструкции, но заметьте, что нельзя одновременно определить для нескольких переменных один тип данных.
Итак, мы рассмотрели явный способ объявления переменной. Перейдем к рассмотрению неявного.
Во-первых, при составлении имен можно непосредственно в имени переменной указать ее тип, добавив в конец имени специальный символ.
Таким образом, объявление типа: Dim numb%, создает переменную с именем numb типа integer. Эти символы не являются обязательной частью имени: если в программе встречаются имена numb% и numb, то они ссылаются на одну и ту же целочисленную переменную. Но нельзя в теле одной процедуры использовать имена переменных, отличающиеся лишь специальным символом определения типа. Например, не допускается одновременное использование переменных numb %
и numb$.
Во-вторых, можно вообще не использовать операторы объявления, а, при необходимости, прямо на месте неявно вводить переменную, чего не советуем делать, исходя из соображений надежности программирования.
49
3.4. Константы
Константа - это элемент данных, не меняющий своего значения в процессе выполнения программы.
Синтаксис объявления констант практически ничем не отличается от объявления переменных:
[Public | Private] Const имяКонстанты _ [As типДанных] = <выражение>
Ключевые слова Public и Private имеют такой же смысл, что и в случае с переменными. Отсутствие данных операторов и описание константы внутри процедуры объявляет ее как локальную; их использование, наоборот, объявляет ее как открытую или закрытую глобальную константу. Задание имени и типа данных аналогичны случаю с переменными.
Выражение - это любое значение или формула, возвращающая значение, используемое в качестве константы. Например:
Const AA = 5000
Или в виде формулы:
Const BB = AA * 0.1
В VBA кроме констант, описываемых пользователем, существуют предопределенные встроенные константы. При именовании встроенных констант используется стандартное соглашение, позволяющее определить, к объектам какого приложения относится эта константа. Например, встроенные константы, относящиеся к Word, начинаются с букв wd, Excel - ex, PowerPoint - pp, Access - ac, VBA - vb. Например, в случае Call MsgBox("Использование констант", vbInformation) используется константа vbInformation, с помощью которой в диалоговом окне выводится значок "Информация".
3.5. Массивы
Перейдем к рассмотрению более сложных типов данных - структурных типов данных, простейший из них - массивы.
50
Массив - это совокупность однотипных индексированных переменных. Обращение же к элементам массива происходит путем указания имени данного массива и порядкового номера требуемого элемента.
Dim authorNames(...) As String
'Для каждого элемента массива authorNames проверить, 'начинатся ли authorNames(индекс) с "А"
Количество же индексов массива в VBA может достигать 60, но это своего рода излишество: как правило, используются массивы с одним, двумя и тремя индексами. О количестве индексов массива говорят как о размерности массива. Массивы с одним индексом называют одномерными, с двумя - двумерными и т. д.
Как и любой элемент данных, массив необходимо объявлять. Ниже приведен синтаксис объявления:
{Dim | Private | Public | Static} _
имяМассива1 (<размер1>_
[, <размер2>] . . . ) [As типДанных] _ [, имяМассива2 (<размер1>_
[, <размер2>] ...) [Аs типДанных]} ...
Размер массива может задаваться тремя способами:
1.Объявление только верхней границы, при этом нижняя граница по умолчанию принимает значение, равное 0. Синтаксис подобного объявления прост:
( верхняяГраница )
2.Объявляется нижняя и верхняя граница изменения ин-
декса:
(нижняяГраница То верхняяГраница)
3.Размер массива вообще не объявляется, размерность массива неизвестна:
()
После задания размерности вы можете указать, какому типу данных будут принадлежать элементы массива, используя ключевое слово As. При его отсутствии, по умолчанию
51
элементы массива будут иметь тип Variant. Также при необходимости после запятой вы можете объявить еще один массив и т. д.
Приведем ряд примеров, поясняющих использование синтаксических конструкций. В первом примере объявляется одномерный массив типа variant с использованием ключевого слова Dim, причем индексация производится от -14 до 0. Данная индексация имеет смысл, например, когда вы имеете дело с данными, зависящими от некоего временного интервала. Допустим, количество книг, проданных за предыдущие две недели. В таком случае cntBookSales (-2) будет соответствовать количеству книг, проданных позавчера.
Во втором примере показано объявление двумерного массива магазинов с использованием константных аргументов и инициализация элемента (7, 2).
Листинг. Объявление массивов {Первый способ)
Sub examplel
Dim cntBookSales (-14 To 0) cntBookSales (-2) =10
End Sub
{Второй способ } Sub Example2
Const AUTHORS As Integer = 100, FIELDS As Integer =2 Dim authorList (1 To AUTHORS, 1 To FIELDS) As String authorList(7, 2) = "Усаров"
End Sub
В приведенных примерах речь все время шла о массивах фиксированной размера, количество элементов в которых явно указано во время описания в операторе Dim. Такие массивы называются статическими. Теперь рассмотрим случай, когда количество элементов массива изначально не известно.
Для решения подобных проблем VBA предлагает использование динамических массивов, т. е. массивов, размеры и
52