
- •Часть 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
Свойства и методы пунктов меню
Для обработки пунктов меню применяются свойства и методы объекта Controls. Для удаление пункта меню метод Delete, для скрытия и отображения пункта меню иcпользуют свойство Visible, для запрещения и разрешения пунктов меню свойство - Enabled. Для создание разделительной линии перед пунктом меню свойство - BeginGroup. Свойство Visible, Enabled и BeginGroup имеют значение соответственно True если меню видно и активно и отделено от других пунктов разделительной линией, и False если меню скрыто и не активно и не имеет разделительной линии. Для пунктов меню, которые не имеют подпунктов, через свойство FaceId можно задать код пиктограммы меню (см. Коды пиктограмм пунктов меню). Методом Ececutе пункта меню, можно эмулировать выбор соответствующего пункта меню левой клавишей мыши.
Если пункт меню не имеет подпунктов, то этому пункту можно задать свойство Controls.ShortcutText, которое выводит справа от подписи пункта текст, сообщающий о том, комбинация каких управляющих клавиш назначена для данного пункта меню (см. Назначение управляющих клавиш к пункту меню).
Через свойство OnAction можно задать имя процедуры, которая не имеет входных параметров. Данная процедура будет срабатывать при клике левой клавишей мыши по соответствующему пункту меню.
Если пункт меню скрыт, но свойство пункта меню BeginGroup имеет значение True, то разделительная линия скрытого пункта меню видна над последующим, за ним пунктами.
Можно удалять и скрывать пункты, начиная с первого уровня, при удалении и скрытии верхнего уровня, все подпункты меню расположенные в удаляемом пункте удаляются и скрываются вместе с ним.
Во входном параметре объекта Controls записывается либо подпись пункта меню, либо его индекс.
Подпрограммы ДобавитьПункты (см. Добавление пунктов меню) добавляют по два пункта меню (не помеченный пункт меню, и однотипный ему - помеченный). Причем в меню виден только один из вышеуказанных пунктов. Не помеченный пункт меню имеет подпись без пробела в конце, а помеченный не имеет пробел, завершающий подпись (на стандартные пункты меню это правило не распространяется).
Пример:
‘Удаление пункта меню первого уровня
CommandBars.ActiveMenuBar _
.Controls("Подпись пункта").Delete
‘Скрытие пункта меню второго уровня помеченного галочкой
CommandBars.ActiveMenuBar.Controls( _
"Подпись пункта первого уровня").Controls( _
"Подпись пункта второго уровня ").Visible =false
‘В третий подпункт меню добавлено сообщение о том, ‘какая комбинация управляющих
‘клавиш назначена данному пункту
CommandBars.ActiveMenuBar.Controls("первый") _
.Controls("Второй пункт").Controls("Третий") _
.Control.ShortcutText = "CTRL+M"
Переключатель в пункте меню
В пункте меню, который не имеет подпунктов, можно установить переключатель.
Подпрограммы ДобавитьПункты (см. Добавление пунктов меню) добавляют по два пункта меню (не помеченный пункт меню, и однотипный ему - помеченный). Причем в меню виден только один из вышеуказанных пунктов. Не помеченный пункт меню имеет подпись без пробела в конце, а помеченный не имеет пробел, завершающий подпись. Поэтому, необходимо менять в событийной процедуре этих пунктов меню свойство Visible на обратное:
‘переключатель пункта меню второго уровня
Sub Два()
With Application.CommandBars _
.ActiveMenuBar.Controls("мой")
.Controls("два").Visible = _
Not .Controls("два").Visible
.Controls("два ").Visible = _
Not .Controls("два ").Visible
End With
End Sub
‘переключатель пункта меню третьего уровня
Sub W()
With Application.CommandBars.ActiveMenuBar _
.Controls("мой").Controls("о&дин")
.Controls("w").Visible = _
Not .Controls("w").Visible
.Controls("w ").Visible = _
Not .Controls("w ").Visible
End With
End Sub
Если переключатель активен, то свойство меню Visible соответствующего пункта имеет значение True:
With Application.CommandBars.ActiveMenuBar.Controls(“Первый уровень”)
If .Controls(“Второй уровень“ + “ “).visible = _
true then
‘Переключатель включен
Else
‘Переключатель выключен
End If
End with
Примечание:
Все выше сказанное справедливо только для переключателей, которые были добавлены процедурами ДобавитьПункты. Стандартные пункты меню, имеющие переключатели, построены по другому принципу.