
- •Часть 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
Приложение 3( Создание меню ) Введение
Программы, написанные на VBA, выглядят, более законченными, если в них используются пользовательские меню. Особенно удобно, если эти меню создаются и удаляются автоматически (программно). При написании программ VBA большого объема вообще не возможно обойтись без пользовательского меню. В связи с этим, мы решили дополнить наше издание этим приложением.
Типы меню приложений
Внутри приложений MS Office существует три типа меню:
Главное меню – меню, которое выводится по умолчанию вверху окна приложения, выше всех других меню.
Контекстное меню – меню, которое появляется при нажатии правой клавиши мыши на каком либо объекте (в частности на документе Word или книги Excel).
Панель инструментов – меню, которое можно включить и выключить через стандартные пункты головного меню: Вид-Панель Инструментов.
Наиболее часто программист VBA работает с главным и контекстным меню. И в данном издании мы рассмотрим работу именно с этими типами меню приложений.
Создание (и удаление) подпунктов главного меню через меню приложений Создание (и удаление) подпункта главного меню
Войти в меню: Вид – Панель Элементов – Настройка
Рис 21 Создание подпункта главного меню
Выбрать закладку Команды, затем, в разделе Категории выбрать пункт Новое меню (рис 21)
В разделе Команды нажать левую клавишу мыши на пункте Новое меню, и не отпуская левую клавишу мыши перетащить данный раздел в головное меню приложения. (Для удаления нового раздела на главном меню нужно стащить его левой клавишей мыши на окно Настройка)
Кнопкой Изменить выделенный объект можно изменить “Имя:” выделенного пункта меню
Создание (и удаление) пункта меню к макросу
Если не активизировано окно Настройка, войти в меню: Вид – Панель Элементов – Настройка
Выбрать закладку Команды, затем, в разделе Категории выбрать пункт Макросы (рис 22)
Рис. 22 создание пункта меню к макросу
В разделе Команды нажать левую клавишу мыши на пункте Настраиваемая команда меню, и не отпуская левую клавишу мыши перетащить данный раздел в необходимый вам подпункт головного меню приложения. (Для удаления нового раздела на главном меню нужно стащить его левой клавишей мыши на окно Настройка)
Кнопкой Изменить выделенный объект можно изменить “Имя:” выделенного пункта меню, через соответствующий пункт Выбрать значок для кнопки пункта меню, а так же, в приложении Excel – Назначить макрос к пункту меню.
Примечание:
К сожалению, вышеуказанные действия записываются не правильно в макрос. Вернее в программном коде макроса придется внести существенные изменения. Например, если вы сделали макрос, создающий пункт в главном меню с подписью - “Мой пункт”, то в макросе запишется следующий программный код:
Application.CommandBars("Worksheet Menu Bar").Controls.Add _
Type:= msoControlPopup, Before:=11
В этот программный код придется внести ряд изменений:
‘Убран параметр Before, для того, что бы ваш пункт добавлялся строго в ‘конце пунктов главного меню
Application.CommandBars("Worksheet Menu Bar").Controls.Add _
Type:= msoControlPopup
'Определяем индекс последнего, добавленого пункта меню
i = _
Application.CommandBars("Worksheet Menu Bar").Controls.Count
‘Назначаем подпись к пункту меню
Application.CommandBars("Worksheet Menu Bar") _
.Controls(i).Caption = "Мой пункт"
Если вы построите более сложное меню, и к его пунктам будут назначены макросы, пиктограммы и т.п., то вам придется сделать очень много программных изменений в макросе. Поэтому, разумнее полностью проектировать программный код, который, создает подпункты в головном меню. Об этом рассказано нами в следующих главах.
Создание меню в VBA
Обращение к меню
Обращение к меню происходит через объекты CommandBars и ActiveMenuBar. Ниже приведены примеры обращения к свойству Index меню с именем “text” и к главному, активному меню приложения:
Ind = Application.CommandBars(“Text”).index
Ind = Application.CommandBars.ActiveMenuBar.index
Создание пустого меню
Меню можно создать методом add объекта CommandBars.
Ниже приведены два примера создание главного и контекстного меню:
Application.CommandBars.Add Name:= _
"Имя главного меню", _
MenuBar:=True, temporary:=True
Application.CommandBars.Add _
"Имя контекстного меню", msoBarPopup
Вывод меню
Главное меню пользователя можно вывести через свойство Visible, а контекстное меню через метод ShowPopup. Если пользователь создал главное меню и вывел его, то оно заменяет стандартное меню приложения и существует, как главное меню, пока приложение не закрыли, или пока это меню не удалили.
Пример:
CommandBars("Имя контекстного меню").ShowPopup
CommandBars("Имя главного меню").Visible = True
В данном примере показано, как вывести контекстное и главное меню приложения или пользователя.