Рекомендуется давать константам осмысленные имена



Совет 1


Рекомендуется давать константам осмысленные имена и описывать их в самом начале модуля, а затем использовать всюду только именованные константы. Это делает программу не только понятнее, но и проще в сопровождении и отладке. Зачастую значение той или иной константы требуется изменить (хотя бы на время отладки), и тогда достаточно поменять лишь одно значение в описании константы. Если же в тексте программы использовалось непосредственно значение, то изменить все его вхождения намного сложнее.
В VBA, кроме констант, описываемых пользователем, существуют предопределенные встроенные константы. При именовании встроенных констант используется стандартное соглашение, позволяющее определить, к объектам какого приложения относится эта константа. Например, встроенные константы, относящиеся к Word, начинаются с букв wd, Excel — ex, PowerPoint — pp, Access — ac, VBA — vb. Например, в случае
Call Msgbox ("Использование констант", vblnformation)
используется константа vblnformation, с помощью которой в диалоговом окне выводится значок "Информация" (рис. 20.2).
После того как выше мы описали работу с простыми типами данных, перейдем к рассмотрению более сложных — структурных типов данных. Сейчас мы рассмотрим простейший из них — массивы.
Массив — это совокупность однотипных индексированных переменных Представьте, что имеется 20 магазинов, которым издательство поставляет книгу "Microsoft Outlook 2002 в подлиннике". Естественным образом хоте лось бы иметь список, в котором было бы указано количество экземпляров, проданных каждому магазину. Данные количества для разных магазинов являются, в принципе, элементами одного типа (а точнее, просто числами). Таким образом, данная совокупность представляет собой массив. Обращение же к элементам массива происходит путем указания имени данного массива и порядкового номера требуемого элемента. Конечно, вы вправе присвоить каждому магазину персональное имя и работать с ними, как с обособленными единицами. Но представьте, что вам надо провести одну и ту же процедуру для каждого магазина, например подсчитать общее количество проданных книг. Не проще ли задать цикл для всего массива магазинов, где изменяется лишь индекс, который однозначно определяет магазин?
Количество же индексов массива в VBA может достигать 60, но это своего рода излишество, как правило, используются массивы с одним, двумя и тремя индексами. О количестве индексов массива говорят как о размерности массива. Массивы с одним индексом называют одномерными, с двумя — двумерными и т. д. Продолжив наш пример, предположим, что издательство выпускает не одну книгу, а множество различных книг, скажем, еще 100. Таким образом, вы имеете дело с двумерным массивом (20x100) и обращение к необходимому элементу становится тривиальным: магазин № 7 книга № 56. Данное обращение покажет количество проданных книг № 56 магазину № 7. Конечно, в языке VBA подобные выражения неприемлемы, но суть остается той же. Как и любой элемент данных, массив необходимо объявлять. Ниже приведен синтаксис объявления массива:
{ Dim I Private | Public | Static} имяМассива (<размер1> [, <размер2>] ...) [Аs типДанных] [, имяМассива (<размер1> [, <размер2>] ... ) [As типДанных]]
Итак, опять мы встречаем знакомые конструкции — операторы объявления массива и имя массива. Размер массива может задаваться тремя способами.
  • Объявляется только верхняя граница, при этом нижняя граница по умолчанию принимает значение, равное 0. Синтаксис подобного объявления прост: { верхняяГраница}
  • Объявляется нижняя и верхняя граница изменения индекса: (нижняяГраница То верхняяГраница)
  • Размер массива вообще не объявляется, размерность массива неизвестна: ( )
Приведем ряд примеров, поясняющих использование синтаксических конструкций. В первом из них объявляется одномерный массив типа variant с использованием ключевого слова Dim, причем индексация производится от -14 до — 1. Данная индексация имеет смысл, например, в случае с метеорологическими данными, представляющими средние дневные температуры за последние две недели. В таком случае temperature (-2) будет соответствовать позавчерашней температуре. Во втором примере показано объявление двумерного массива магазинов с использованием константных аргументов, и инициализация элемента (7, 56).


Содержание раздела