Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Макросы.doc
Скачиваний:
26
Добавлен:
21.11.2018
Размер:
16.91 Mб
Скачать

Программная работа с меню

Создание строки меню с помощью кода VBA ничем не отличается от аналогичной операции создания панели инструментов, рассмотренной в предыдущем часе. Фактически, вы создаете элемент той же самой коллекции CommandBars (Командные панели). Оператор, создающий строку меню (командную панель), имеет следующий синтаксис:

CommandBars.Add(Name, Position, MenuBar, Temporary)

Аргумент Name (Имя) содержит имя командной панели. Строго говоря, аргумент Name необязателен. Если он не задан, то по умолчанию командной панели присваивается имя, подобное Custom 1.

Аргумент Position (Позиция) также необязательный аргумент. Он указывает местоположение или тип создаваемой командной панели.

Так как мы создаем именно строку меню, то аргументу MenuBar (Строка меню) надо дать значение True. По умолчанию этот аргумент имеет значение False.

Аргумент Temporary (Временно) также необязательный. Если этот аргумент имеет значение True, то командная панель будет удалена при закрытии приложения, ее содержащего. По умолчанию этот аргумент имеет значение False.

Приступим к практической работе по созданию меню. Закройте все открытые рабочие книги и откройте новую. Нажмите комбинацию клавиш <Alt+F11> для перехода в редактор Visual Basic. Вставьте модуль в текущую рабочую книгу. Далее выполните следующие действия.

  1. Создайте новую процедуру с именем ПервоеМеню.

  2. Введите следующий код процедуры:

Dim mybar As CommandBar

Set mybar = CommandBars.Add(Name:="Чcal", _

 Position:=msoBarTop, MenuBar:=True, Temporary:=True)

mybar.Visible = True

CommandBars("Worksheet Menu Bar").Visible = False

  1. Создайте другую процедуру под именем ОтменаМеню.

  2. Введите код этой процедуры.

CommandBars ("Час17").Delete

  1. Перейдите в рабочую книгу. Создайте командную кнопку на рабочем листе Лист1. Назначьте этой кнопке процедуру ПервоеМеню и задайте надпись на кнопке Мое меню.

  2. Создайте другую командную кнопку и назначьте ей процедуру ОтменаМеню. Задайте надпись на кнопке Стандартное меню.

  3. Щелкните на кнопке Мое меню. В окне рабочей книги вместо стандартной строки меню отобразится пустая строка (рис. 17.4).

  4. Щелкните на кнопке Стандартное меню. Восстановится стандартная строка меню.

Рис. 17.4. Вместо привычного меню - пустая строка

Итак, мы только что создали строку меню (пока пустую) посредством кода VBA. В листинге 17.1 приведен полный код процедуры ПервоеМеню.

Листинг 17.1. Процедура ПервоеМеню

1: Sub ПервоеМеню()

2:  Dim mybar As CommandBar

3:

4:  Set mybar = CommandBars.Add(Name:="Чac17", _

     Position:=msoBarTop, MenuBar:=True, Temporary:=True)

5:  mybar.Visible = True

6:  CommandBars("Worksheet Menu Bar").Visible = False

7:

8: End Sub

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

Dim mybar As CommandBar

Set mybar = CommandBars.Add(Name:="Часl7", _

 Position:=msoBarTop, MenuBar:=True, Temporary:=True)

После создания строки меню она выводится на экран путем установки значения свойства Visible (Видимый) как True. Одновременно с экрана убирается стандартное меню рабочего листа, для чего значение свойства Visible этой строки меню делается равным False:

mybar.Visible = True

CommandBars("Worksheet Menu Bar").Visible = False

Вот и вся процедура создания строки меню. Процедура ОтменаМеню применяет метод Delete (Удалить) для удаления нашей строки меню.

Следующий шаг в процессе создания меню - добавление в нее пунктов и команд.