Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие по VBA(Курица).docx
Скачиваний:
28
Добавлен:
17.11.2019
Размер:
2.71 Mб
Скачать
    1. Идентификаторы, переменные, массивы

Суть объектно-ориентированного программирования заключается в объединении данных и подпрограмм для работы с этими данными в единый объект, называемый классом. При такой концепции изменяется подход к программированию, поскольку появляется независимость данных от программ для их обработки [4,7,9,13].

В объектно-ориентированном программировании для выполнения какого-либо действия программист вызывает подпрограмму обработки (т.е. выдает команду), а поскольку данные, необходимые для обработки, уже связаны с подпрограммой, то требуется передача в подпрограмму данных, связанных только с реализацией команды.

Например, пусть имеется команда: "сдвинуть окно на 5 позиций вправо". В этой команде задано:

  • а) что делать;

  • б) направление перемещения;

  • в) расстояние перемещения.

Как это делается, это не столь уже и важно, хотя один раз приходится заняться детализацией осуществления команды (но и здесь возможно упрощение работы). Реализация этого основного принципа выдачи команд (указывается команда и параметры, необходимые для ее реализации, а вся остальная информация уже сохраняется в объекте) исключает тщательное отслеживание структур данных, но требует разграничение доступа к данным и подпрограммам.

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

Класс, описывающий какой-либо объект, обычно содержит данные являющиеся характерными для объекта. Изменение таких данных возможно только с помощью подпрограмм либо входящих в состав класса, либо имеющих к ним доступ. Такие данные объявляются закрытыми

В объектно-ориентированном программировании приняты следующие термины;

  • подпрограммы, входящие в класс называются методами;

  • выдача команды называется сообщением;

  • выбранная команда часто является свойством;

  • параметры конкретизируют свойство.

С целью повторного использования уже созданных классов, то есть для накопления и усложнения разработанный программ, другими словами для использования в новых разработках уже имеющихся приложений, используется наследование [7,8].

Имена (идентификаторы) - употребляются для обозначения объектов программы (переменных, массивов, процедур и дp.). В VBA имена констант, переменных и процедур должны удовлетворять следующим требованиям:

  • должны начинаться с буквы;

  • не могут содержать точки и символов объявления типа;

  • не могут быть длиннее 255 символов. Длина имен объектов не должна превышать 40 символов.

  • не могут быть ключевыми словами (именами операций, операторов, встроенных функций).

Переменные представляют собой зарезервированное место в памяти ПК для хранения значения. Переменные обозначаются именами - словами, используемыми для ссылки на значение, которое содержит переменная, и характеризуются типом, определяющим вид данных, которые можно хранить в переменной. Переменные могут изменять свои значения в ходе выполнения программы. По умолчанию переменные имеют тип данных Variant, если в модуле отсутствует инструкция DefТип. Для явного указания типа переменной можно в конце ее имени указать символ описания типа:

Currency - @;

Double - #;

Integer - %;

Long - &;

Single - !;

String - $.

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

Константы - имена, идентифицирующие некоторые неизменяемые числовые значения или строки текста. В отличие от переменных их нельзя изменить или назначить им новые значения. В VBA различают внутренние или системные константы, которые имеют префикс vb, например vbOK, и символические или определяемые пользователем с помощью ключевого слова Const константы. Имена констант имеют те же ограничения, что и имена переменных, тип данных, хранящихся в константе, задается так же, как для переменных.

Массивы - последовательности логически связанных элементов одного типа, которым присвоено одно имя. Положение элемента в массиве однозначно определяется его индексами (одним, в случае одномерного массива, или несколькими, если массив многомерный). Имена массивов имеют те же ограничения, что и имена переменных, тип данных, хранящихся в массиве, задается так же, как для переменных. Однако если массив имеет тип Variant, его отдельные элементы могут содержать данные разных типов.

Другое определение массива - это объекты программы, которые позволяют хранить однотипные значения под определенным именем.

Доступ к элементам массива осуществляется по их номеру – индексу. Если для доступа к элементу массива нужен один индекс, то массив одномерный, если два индекса, то массив двухмерный (матрица).

В VBA существуют два вида массивов: массив фиксированного размера и динамический массив, размер которого может изменяться во время выполнения программы с помощью специальных операторов [14,15].

Одномерные массивы задаются в следующем виде:

Dim имяМассива (1 То n) As T, где T – тип элементов.

Матрицы задаются в виде:

Dim имяМассива (1 То n, 1 To m) As T, где n – число строк, а m – число столбцов

При необходимости генерации случайных чисел используются функции:

Randomize – активизация генератора случайных чисел;

Rnd – получение случайного вещественного числа нормально распределенного в диапазоне от 0 до 1.

При объявлении массива фиксированной длины за его именем в круглых скобках задаются через запятую верхние границы каждой размерности, не превышающие максимального значения типа Long. По умолчанию нижняя граница равна 0, но ее можно задать явно с помощью ключевого слова To:

Lines (100 To 120) As String

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

В VBA массивы любых типов данных требуют 20 байт памяти плюс 4 байта на каждую размерность массива плюс число байт, требуемых для хранения данных. Объем памяти, требуемый для сохранения данных, рассчитывается как произведение числа элементов на размер элемента. Например, данные в одномерном массиве, который содержит четыре элемента типа Integer, требующих по 2 байта на элемент, занимают 8 байт. Вместе с 20 байтами на массив и 4 байтами на размерность общий требуемый объем составляет 32 байта.

Значение типа Variant, содержащее массив, требует 12 байт в дополнение к объему, занимаемому требуемым массивом.

Структуры - в VBA нет понятия структуры, но есть определяемый пользователем с помощью инструкции Type тип данных. Типы данных, определяемые пользователем, могут содержать один или несколько элементов любого типа данных, массивы или ранее определенные пользователем типы.

Например:

Type MyType

MyName As String ' Имя записывается в строковую переменную.

MyBirthDate As Date ' День рождения записывается в переменную даты.

MySex As Integer ' Пол записывается в целую переменную

End Type ' (0 для женщины, 1 для мужчины).

Рассмотрим примеры по работе с массивами чисел (применение оператора цикла рассматривается в главе 6).

Пример 1. Заполнить массив случайными числами, вычислить их сумму (рис. 11.).

Рис. 11. Результат программы примера 1.

Пример 2. Заполнение матрицы случайными числами + Объект Cells (рис. 12.).

Range - объект для работы с данными в ячейках рабочего листа.

Cells - объект доступа к диапазону ячеек по индексам.

Рис. 12. Результат программы примера 2.

Пример 3. Заполнение матрицы случайными числами + Функция Rnd+Объект Cells.

Рис. 13. Результат программы примера 3.

Пример 4. Заполнение двух матриц случайными числами, получение третьей матрицы, элементы которой являются суммами двух предыдущих (рис. 14.).

Рис. 14. . Результат программы примера 4.