- •Введение Она носила усы, и считала себя тигрицей.
- •Объектно-ориентированное программирование
- •Обзор типов данных vba
- •Типы данных vba
- •Переменные
- •Константы
- •Математические функции
- •1.2. Редактор vba. Первое знакомство Запуск редактора vba
- •Создание простейших программ
- •1.3. Изменение порядка выполнения операторов Операторы и выражения
- •Арифметические операторы
- •Символы совпадения с образцом для оператора Like
- •Логические операторы
- •Изменение порядка выполнения операторов
- •Повторение действий: циклы
- •Глава 2 Объект UserForm
- •2.1. Свойства и методы объекта UserForm Свойства объекта UserForm
- •Задачи на закрепление материала
- •Глава 3 Массивы, процедуры, функции
- •3.1. Организация массивов Одномерные массивы
- •Двумерные массивы
- •3.2. Работа с различными типами данных Тип, определяемый пользователем
- •Перечисляемый тип
- •Приведение и преобразование типов
- •Функции преобразования типов
- •Операции со строками
- •Функции работы со строками
- •3.3. Процедуры и функции vba Описание процедур и функций vba
- •Объявление процедуры инициализации массива
- •Объявление функции, подсчитывающей сумму любого числа аргументов
- •Вызов подпрограмм и функций
- •Макросы
- •Редактирование программного кода макроса в редакторе Visual Basic
- •Задачи на закрепление материала
- •Глава 4 Создание vba-программ
- •4.1. Элемент управления ListBox
- •Задачи на закрепление материала
- •Дополнительные задания
- •4.2. Элементы управления ComboBox, OptionButton и Frame Поле со списком
- •Переключатель и рамка
- •Задачи на закрепление материала
- •4.3. Элементы управления MultiPage, ScrollBar, SpinButton Коллекция Controls
- •Набор страниц MultiPage
- •Значения свойства TabOrientation
- •Полоса прокрутки ScrollBar
- •Счетчик SpinButton
- •4.4. Объект DataObject Описание объекта DataObject
- •Перемещение объектов. Реализация технологии DragAndDrop
- •Свойства объекта Word.Application
- •Работа с документами и класс Document
- •События объекта Document
- •Документ и его части
- •Объекты Range и Selection
- •Работа с текстом
- •5.2. Форматирование документа Работа с текстом(продолжение)
- •Создание кнопки или панели в Word
- •Задачи на закрепление материала
- •Заявление
- •При поездке на дачу, находящуюся на расстоянии 55 км, при цене бензина за литр 18,50 руб., потребление бензина составит 101,75 руб.
- •Отчет о доходе
- •Глава 6 Автоматизация стандартных документов
- •6.1. Встроенные диалоговые окна Диалоговые окна
- •Значения аргумента кнопки процедуры MsgBox
- •Значения аргумента кнопки процедуры MsgBox
- •Задачи на закрепление материала
- •6.2. Создание и автоматическое заполнение бланков стандартных документов Создание vba-программ
- •Задача на закрепление материала
- •Свойства объекта Range
- •Методы объекта Range
- •Методы объекта Range, использующие команды Excel
- •Округление чисел
- •Приведение данных
- •Создание vba-программ
- •Использование методов AutoFill при заполнении таблиц
- •7.2. Использование возможностей vba при непосредственных расчетах Создание vba-программ
- •Отклонение фактического уровня издержек обращения от плана за месяц _________________ 20__ г.
- •Задачи на закрепление материала
- •7.3. Финансовые функции Расчет амортизации
- •Общие параметры функций для расчетов амортизации
- •Создание vba-программы
- •Задача на закрепление материала
- •Глава 8 Построение диаграмм средстами vba
- •8.1. Построение гладких диаграмм Диаграммы в Excel
- •Создание vba-программы
- •8.2. Построение круговых диаграмм и гистограмм Создание vba-программ
- •Глава 9 Базы данных в Excel
- •9.1. Заполнение базы данных Элементы управления
- •Создание vba-программы
- •Задача на закрепление материала
- •9.2. Конструирование пользовательского интерфейса Создание vba-программы
- •Конструирование интерфейса. Презентация
- •Задача на закрепление материала
- •Глава 10 Создание собственного головного меню
- •Создание меню с помощью vba
- •Фрагмент таблицы идентификаторов встроенных команд меню
- •Литература
Фрагмент таблицы идентификаторов встроенных команд меню
Пример добавления команды проверки правописания Spelling в меню Проверкииз панели Головное меню:
Set mySpell = CommandBars(«Головное меню»).Соntrols(«Проверки»)_.Controls.Add(Id:=2)
Пример 61.Создать документ, в котором будут отключены все встроенные меню и создано собственное иерархическое меню. На верхнем уровне меню будет состоять из одного пункта. Оно будет включать два подменю, каждое из которых содержит по одной команде. Для реализации данных условий создаем простую форму, содержащую две кнопки: Создатьи Отмена(рис. 127). Первая кнопка отключает все панели открытого документа и создает собственное меню (рис. 127), вторая кнопка возвращает все панели на место (рис. 128). Технология выполнения 1. Активизируйте приложение Word и создайте документ. 2. Перейдите в редактор VBA и создайте форму. 3. Создайте процедуру создания собственной панели.
Option Explicit Public Sub CreateCustomMenu() Dim CstmBar As CommandBar Dim CstmPopUpi As CommandBarPopup, CstmPopUp2 As CommandBarPopup Dim CstmCtrl As CommandBarControl Dim Exist As Boolean 'Выключаем все панели For Each CstmBar In CommandBars CstmBar.Enabled = False Next CstmBar 'Создаем, включаем и делаем видимой собственную панель Exist = False For Each CstmBar In CommandBars If CstmBar.Name = «Головное меню» Then Exist = True Exit For End If Next CstmBar If Not Exist Then Set CstmBar = CommandBars.Add(Name:="Головнoe меню", Position:=msoBarTop, MenuBar:=True, Temporary:=False) End If CstmBar.Enabled = True CstmBar.Visible = True 'Добавляем меню на панель Exist = False For Each CstmCtrl In CstmBar.Controls If CstmCtrl.Caption = «&Ввод документов» Then Exist = True Exit For End If Next CstmCtrl If Not Exist Then Set CstmCtrl = CstmBar.Controls.Add(Type:=msoControlPopup, Before:=1) CstmCtrl.Caption = «&Ввод документов» 'Добавляем две команды подменю Set CstmPopUpi = CstmCtrl.Controls.Add(Type:=msoControlPopup) CstmPopUpi.Caption = « о движении товаров» Set CstmPopUp2 = CstmCtrl.Controls.Add(Type:=msoControlPopup) CstmPopUp2.Caption = « финансовых» 'Добавляем команду в каждое подменю Set CstmCtrl = CstmPopUpi.Controls.Add(Type:=msoControlButton) CstmCtrl.Caption = «Накладная» CstmCtrl.OnAction = «Module1.Invoice» Set CstmCtrl = CstmPopUp2.Controls.Add(Type:=msoControlButton) CstmCtrl.Caption = «Счет» CstmCtrl.OnAction = «Module1.Account» End If End Sub
Пояснения к процедуре.Вначале, используя свойство Enabled, были отключены все панели. Затем было сформировано головное меню с двумя подменю и командами, содержащее всего один пункт. Обратите внимание: перед добавлением нового пункта обычно проверяется, а не был ли он уже добавлен. Подобная проверка позволяет избежать ошибок, возникающих при попытках добавить уже существующий пункт или удалить несуществующий. 4. Создайте процедуру восстановления панелей инструментов документа.
Public Sub ResetMainMenu() Dim CstmBar As CommandBar 'Включаем все панели For Each CstmBar In CommandBars CstmBar.Enabled = True Next CstmBar Set CstmBar = CommandBars.Item(«Menu Bar») CstmBar.Visible = True End Sub
5. Пропишите обработчик кнопки «Создать».
Private Sub CommandButton1_Click() Call CreateCustomMenu End Sub
6. Пропишите обработчик кнопки «Отмена», восстанавливающей стандартное окружение.
Private Sub CommandButton2_Click() Call ResetMainMenu End Sub
7. Чтобы пример был законченным, приведем процедуры, вызываемые в ответ на выбор команд меню Накладнаяи Счет:
Public Sub Invoice() MsgBox («Накладная!») End Sub Public Sub Account() MsgBox («Счет!») End Sub
8. Откомпилируйте программу, запустите форму на выполнение.
Рис. 127.Форма примера 61 в рабочем режиме. Результат работы кнопки Создать Примечание.Данный пример доработать для более рационального использования следующим образом: в головном меню разработчика создать пункт Форма,который вызывает соответствующую форму, редактирующую меню всего приложения (рис. 129, 130). После нажатия кнопки Создатьменю всего приложения Word изменяется, подключив Главное меню, созданное программно. В этом меню пункт «Работа с меню + Отмена» запускает форму с соответствующими кнопками ( Создатьи Отменить).
Рис. 128.Результат работы кнопки Отменить
Рис. 129.Главное меню разработчика и вызываемая форма
Рис. 130.Главное меню приложения, созданное программно, и пункт Отмена, вызывающий форму с кнопкой Отменить