
- •Часть 2.
- •8 Архитектура проекта
- •8.1 Введение (основные элементы проекта и их построение)
- •8.1.2 Этапы написания проекта
- •Установка (и удаление) элементов управления на лист Excel
- •Установка начальных значения свойств элементов управления
- •Установка порядка расположение элементов управления (установка одного элемента управления над другим)
- •Создание пользовательской формы
- •Создание модулей макросов проекта
- •Создание событийных процедур элементов управления, а так же событийных процедур родительских объектов
- •Быстрый переход в событийную процедуру элемента управления
- •8.1.3 Изменение свойств проекта
- •8.1.4 Установка и снятие защиты проекта
- •9 Доступность подпрограмм и полей модулей проектов
- •9.1 Введение
- •9.2 Надстройки проектов
- •9.2 Ссылка на другой проект
- •10 Отладка кода программы в vba редакторе
- •10.1 “Компиляция” проекта
- •10.2 Запуск подпрограмм, не имеющих входных параметров из редактора vba
- •10.3 Пошаговый запуск подпрограмм, не имеющих входных параметров
- •10.4 Непосредственный запуск формы из редактора vba
- •10.5 Точки останова и оператор Stop
- •10.6 Аварийное прерывание работы программы приложением Excel
- •10.7 Принудительная остановка и принудительное прерывание программы пользователем
- •10.8 Окно локальных переменных и Окно отладки
- •11 Справочная система vba
- •11.1 Переход к справочной системе
- •11.2 Список имен потомков, методов и свойств объектов в окне редактора модуля
- •11.3 Просмотр списка операторов vba в окне редактора модуля (просмотр библиотек)
- •11.4 Окно просмотра свойств, методов, потомков и родителей объектов
- •12 Дополнительная информация
- •12.1 Параметры работы редактора vba
- •12.2 Защита от макровирусов
- •12.3 Причины, по которым код vba проекта может не исполняться
- •Приложение 1 Задание 1 (автозаполнение пола)
- •Задание 2 (автозаполнение комментариев к числам)
- •Задание 3 (заучиватель иностранных слов)
- •Задание 4 (телефонная книжка с поиском)
- •Задание 5 (программирование связей таблиц Excel)
- •Задание 6 (защита служебных полей таблицы Excel)
- •Приложение 2 (Программирование через редактирование макроса) Введение
- •Запись макроса в книгу Excel
- •Запуск макроса из меню.
- •Быстрый переход в код макроса
- •Пример создание процедуры через макрос.
- •Некоторые замечания по запуску макроса из событийных процедур
- •Назначение управляющих клавиш для запуска готового макроса Назначение управляющих клавиш макросам через меню приложений
- •Программное назначение управляющих клавиш макросам
- •Приложение 3( Создание меню ) Введение
- •Типы меню приложений
- •Создание (и удаление) подпунктов главного меню через меню приложений Создание (и удаление) подпункта главного меню
- •Создание (и удаление) пункта меню к макросу
- •Удаление меню
- •Добавление пунктов в меню
- •Свойства и методы пунктов меню
- •Переключатель в пункте меню
- •Коды пиктограмм пункта меню
- •Односеансное контекстное меню
- •После выбора пункта ПервыйУровень
- •После выбора пункта ВторойУровень1 Назначение управляющих клавиш к пункту меню
- •Приложение 4 ( Программная обработка модулей vba ) Введение
- •Экспорт модуля проекта в файл
- •Импорт модуля проекта из файла
- •Импорт модуля через “организатор” (данный код только для Word приложения)
- •Создание свойств и методов пользовательского класса
- •Создание событий пользовательского класса
- •Приложение 6 (Ссылка на приложение ms Office)
- •Приложение 7 (связь с таблицами и запросами базы данных) Введение
- •Связь с базой данных через указатели
- •Непосредственная загрузка таблицы базы данных в Excel таблицу
- •Форма для интерактивной работы с записью таблицы базы данных
- •С записями таблицы базы данных
- •Браузер таблиц и запросов базы данных
- •Методы поиска объекта Recordset
- •Пример использования метода Seek
- •Пример использования методов Find
- •Приложение 8 (Обращение к api-функциям) Введение
- •Скрытие и отображение панели задач через api функции
- •Запуск ярлыка и исполняемых файлов через api функцию
- •Приложение 9 (Основные понятия визуального программирования на доступных примерах)
- •Яблоко1.Сплющить
- •8 Архитектура проекта 3
- •8.1 Введение (основные элементы проекта и их построение) 3
- •Приложение 3( Создание меню ) 64
- •Приложение 4 ( Программная обработка модулей vba ) 90
- •Приложение 5 (Создание модуля класса) 94
- •Приложение 6 (Ссылка на приложение ms Office) 108 Приложение 7 (связь с таблицами и запросами базы данных) 113
- •Часть 2
Яблоко1.Сплющить
Поспевшее яблоко или груша упадет на землю, событие произойдет одно и тоже, но для различных объектов и для объектов различного класса. Для того, что бы обнаружить событие объекта, в VBA существует специальная событийная процедура, которая выполняется во время соответствующего события. Мы знаем, что яблоки висящие на яблоне падают на то, что находится под ними. Данное действие, природа спрограммировало бы на языке VBA следующим образом:
Private Sub Яблоко1_падение
Упасть на то, что находится под яблоком
End Sub
Первая строчка в данном примере это заголовок событийной процедуры Private Sub – это служебные слова, с которых обычно начинается заголовок событийной процедуры в языке VBA. За этими словами записано имя объекта - Яблоко1. За именем объекта, записано имя события - падение. Завершают событийную процедуру в языке VBA служебные слова -End Sub. Между заголовком и концом процедуры пишутся команды, которые необходимо выполнить после того, как указанное событие произойдет. В данном примере это команда: Упасть на то, что находится под яблоком.
Разберем следующие понятия VBA:
Родитель – класс(объект), порождающий другой класс(объект)
Потомок – класс(объект), происходящий от Родителя
С
Потомоки объекта Яблоня1
Потомоки объекта Природа
Объект: Яблоко1
Класса
– Яблоки (Потомок
объекта Яблоня1)
Объект: Природа Класса
– Природа
(
Родитель всех объектов
)
Объект: Яблоня1
Класса – Яблони
(Яблоня1
- потомок объекта Природа)
Объект: Яблоко2
Класса
– Яблоки
Объект: ГрушевоеДерево1
Класса – ГрушевыеДеревья
Потомоки объекта ГрушевоеДерево1
Объект: Груша1
Класса
– Груши (Потомок
объекта ГрушевоеДерево1)
Объект: Груша1
Класса
– Груши (Потомок
объекта ГрушевоеДерево1)
Рис 32 Родители и потомки
Таким образом, Яблони это класс, который порождает класс Яблоки. А Грушевые Деревья это класс, порождающий класс Груши. По аналогии языка VBA, мы, при обращении к объекту Яблоко, должны указать всех родителей, которые, породили его:
Природа.Яблоня1.Яблоко1.Созреть
Природа.Яблоня2.Яблоко1.Цвет = красное
В данных примерах обращаются к методу Созреть объекта Яблоко1 расположенного на Яблоне1, и к свойству Цвет объекта Яблоко1, расположенного на Яблоне2. Поскольку оба объекта происходят от разных родителей, им можно давать одно и тоже имя, но при этом необходимо указывать имя родителей данных объектов.
Все яблони растут в природе, нет таких яблонь, которые могут существовать вне природы, поэтому имя родителя Природа в указанном выше нами примере можно опустить:
Яблоня1.Яблоко1.Созреть
Яблоня2.Яблоко1.Цвет = красное
А если вы находитесь на самой Яблоне, например на Яблоне1 указанной в нашем примере, то в этом случаи в языке VBA допускается опустить имена всех родителей, для объекта Яблоко:
Яблоко1.Созреть
VBA объект даже может быть потомком того объекта, класс которого, не порождает класс объекта потомка. Продолжая допускать, что фрукты являются объектами VBA, как и деревья, на которых фрукты растут, рассмотрим следующую ситуацию, при которой объект насильственно помещен на своего не настоящего родителя. Это может произойти в том случаи, когда, например, на Яблоню привили ветку ГрушевогоДерева, и тогда может возникнуть следующая ситуация:
Яблоня1.Груша1.Созреть
Не смотря на то, что объект Груша может быть потомком только объекта ГрушевогоДерева, в данной ситуации объект Груша1 является потомком объекта Яблоня1.
Рассмотрим еще ряд понятий языка VBA:
Наследственность – происходит тогда, когда класс потомок наследует от класса родителя методы, свойства, события.
Полиморфизм – происходит тогда, когда в классе потомке имеются одноименные методы, свойства, события, но которые выполняют совсем другую функцию, отличную от функции методов, свойств, событий родительского класса.
Разберем понятие наследственность на следующем примере:
Яблоня1.Расти
Яблоня1.Яблоко2.Расти
В данном примере объект Яблоко2 унаследовало метод Расти от класса своего родителя Яблоня1, т.е. метод, позволяющий увеличиваться в размерах.
Теперь рассмотрим понятие полиморфизм:
Яблоня1.Развиться
Яблоня1.Яблоко2.Развиться
Объект Яблоня1 развивается следующим образом: у нее вырастают ветки, на ветках появляются листья, на определенном этапе развития на ветках появляются почки из которых развиваются объекты-потомки - Яблоки.
Объект Яблоко2 развивается не так, как его родитель Яблоня1, из почки появляется цветок, в цветке образуется завязь, которая постепенно превращается в плод, на объекте из класса Яблоки не может вырасти ветка, листок или почка. Таким образом, метод Развиться класса Яблони выполняет другую функцию, отличную от метода Развиться объектов из класса Яблоки.
Оглавление