Как вы догадались, ИмяМеню - это название строки меню, которое используется для ссылки на нее в коде процедуры. Аргумент Туре (Тип) задает тип создаваемого элемента, в данном случае для создания раскрывающегося пункта меню надо задать тип msoControlPopup.
Значение аргумента Id зависит от типа пункта меню, вставляемого в строку меню. Если это пункт из встроенной системы меню Excel, то значение Id задается целым числом, соответствующим этому пункту. Если создается пользовательский пункт меню (т.е. такой, которого нет в системе меню Excel), то Id следует положить равным 1. Как определить номер (Id) пункта меню Excel? Самый простой путь определения такого номера - создание макроса, вставляющего этот пункт в существующую строку меню. Просмотрев код макроса, вы определите этот номер.
Для вставки пункта меню в строку меню щелкните правой кнопкой мыши в строке меню и в контекстном меню выберите команду Настройка. В диалоговом окне Настройка перейдите на вкладку Команды и в списке Категории выберите пункт Встроенные меню. После этого в списке Команды отобразятся все возможные встроенные пункты меню Excel. Перетащите нужный пункт из списка Команды в строку меню.
Аргумент Parameter (Параметр) необязательный, и его значение зависит от типа пункта меню, который добавляется в строку меню. Если это пункт из встроенной системы меню Excel, то обычно этот аргумент опускается. Если вставляется пользовательский пункт меню, то этот аргумент можно использовать для передачи информации о выборе данного пункта в процедуру Visual Basic.
Значение необязательного аргумента Before (Перед) определяет позицию создаваемого пункта меню в строке меню. Этот пункт меню будет вставлен перед тем пунктом строки меню, номер которого указан в данном аргументе. Если этот аргумент не задан, то новый пункт вставляется в конец строки меню.
Если хотите сделать пункт меню или даже команду временной, т.е. работающими только тогда, когда отрыто приложение, для которого создается строка меню, задайте необязательный параметр Temporary как True. По умолчанию этот аргумент имеет значение False.
Если необходимо добавить пункт меню в активную строку меню, то используйте свойство ActiveMenuBar коллекции commandBars, которое возвращает имя текущей строки меню. Вот пример использования этого свойства:
Set CurrMenuBar = CommandBars.ActiveMenuBar
Обычно команды пользовательских меню должны загружать какие-либо процедуры. Как назначить элементам меню процедуры, показано в листинге 17.2. В этом листинге в строку меню Час17 добавлены пункты Файл и 17-й час.