Создание собственного головного меню

    Создание  собственного головного  меню

    Система меню Office 97 включает головную строку меню (menu bar), обычно расположенную в верхней части активного окна. Оно постоянно находится на экране. Изменяться это меню может при переходе к другому активному окну или по командам из программ на VBA. Каждая программа головного меню является именем вертикально расположенного меню, выпадающего при выборе этой команды. Команда такого меню может быть именем подменю (при этом она отмечается направленной вправо стрелкой). Подменю появляется на экране слева или справа от родительского меню, когда пользователь выбирает команду с его именем.

    Здесь в головном меню выбрана команда  Вид (View), а меню Вид – команда Панели инструментов (Toolbars), которая является именем соответствующего подменю. В подменю Панели инструментов выделена команда Настройка (Customize), которая будет неоднократно упоминаться далее, поскольку с её помощью можно производить многие действия, связанные с изменениями меню. Меню Вид называется родительским по отношению к подменю Панели инструментов, а меню Панели инструментов – дочерним по отношению к Вид. Вообще команды подменю тоже могут быть именами отдельных меню и т.д. Таким образом, меню приложений Office 97 образуют иерархичную структуру. Корень этой структуры – головное горизонтально расположенное меню, его непосредственными потоками являются выпадающие меню, заголовки которых образуют головное меню. Концевые вершины этой иерархии – непосредственно исполняемые команды, а пути от корня к вершинам проходят по заголовкам соответствующих меню и подменю.

    Согласно  существующим формальным и фактическим  стандартам проектирование интерфейса работа прикладной программы должна начинаться с активизации головного  меню, которое находится в верхней  части окна приложения. Собственное головное меню для прикладной системы Microsoft Access можно спроектировать, вызвав диалоговое окно Настройка (Curtomize), а для систем, базирующихся на Microsoft Excel, Word или PowerPoint, - используя VBA.

    В Microsoft Access можно спроектировать собственное головное меню визуально, используя для этого диалоговое окно Настройка. Для его вызова нужно в меню Вид выбрать команду Панели инструментов (Toolbars), а затем в появившемся подменю – команду Настройка.

    Новое меню создаётся так:

  1. Щелкнуть кнопку Создать (New) на вкладке «Панели инструментов».
  2. В появившемся окне «Создание панели инструментов» (New Toolbar) ввести имя создаваемого меню и щелкнуть кнопку Ok. На экране появится плавающее меню с заданным именем.
  3. Щелчком кнопки Свойства (Properties) вывести на экран окно «Свойства панели инструментов» (Toolbar Properties).
  4. Установить в списке Тип (Type)команду «Строка меню» (Menu Bar) в качестве типа создаваемой панели и закрытье окно.

    Имя нового меню появится в списке Панели инструментов на вкладке Панели инструментов.

    В окне «Свойства панели инструментов» можно задать и другие свойства создаваемого меню. В частности, свойство закрепление (Docking) и опция перемещение (Allow Moving) позволяют разрешить или полностью или частично запретить перемещение меню по экрану. Для головного меню приложения естественно установить постоянное место на экране. Опция настройка (Allow Customizing) позволяет после завершения создания меню отключить возможность его модификации, а если отключить опцию отображение/скрытие (Allow Showing/Hiding), меню будет на экране постоянно.

Создание  меню с помощью  VBA

    Новое меню в Excel, Word или PowerPoint создается средствами VBA (в этих приложениях диалоговое окно Настройка не содержит кнопки Свойства). В Access тоже можно создать меню, используя VBA, но все же удобнее действовать описанным выше способом.

Новое меню создается методом Add коллекции CommandBars (Панели команд): выражение. Add (Name, Position, MenuBar, Temporary,где выражение — обязательное выражение, возвращающее объект Command- Bars, а все параметры в скобках необязательны. Name задает имя нового меню; Position определяет его положение (значения-константы msoBarLeft, msoBarTop, msoBarRight, msoBarButtom определяют положение меню слева, вверху, справа или внизу окна, msoBarFloating задает «плавающее» меню, msoBarPopup указывает, что новое меню будет всплывающим). Значение True параметра МепиВаr указывает, что новое меню заменит текущую активную строку меню (по умолчанию — False). Значение True параметра Temporary означает, что новое меню будет временным и исчезнет, когда закроется содержащее его приложение (по умолчанию - False).

    В следующем примере создаётся  новое меню «Головное меню» созданным

    Dim cstm As CommandBar

    Set cstm = CommandBars. Add (Name: = «Головное меню», -

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

Добавление  выпадающих меню

    Добавлять новые меню (подманю) и команды к существующим меню (встроенным в Office 97 или созданным пользователем) тоже можно двумя способами: используя диалоговое окно Настройка или VBA. Рассмотрим, как добавить выпадающее меню к существующей панели меню (головному меню).

    Это способ добавления меню или команды более нагляден, в отличие от процедуры создания нового меню его можно применить в любом приложении Office 97, а не только в Access. Открыть диалоговое окно Настройка, а затем:

  1. Если модифицируемого меню на экране нет, щелкнуть кнопку выбора рядом с именем изменяемого меню в списке Панели инструментов на одноименной вкладке Панели инструментов.
  2. В списке Категории (Categories) на вкладке Команды (Commands) выбрать Новое меню (New Menu).
  3. Выбрать команду Новое меню (New Menu) справа в списке Команды (Commands) и перетащить ее в то меню, к которому Вы хотите добавить новое меню. При этом знак I отмечает то место в меню, куда попадет имя нового меню, когда Вы отпустите кнопку мыши.
  4. Щелкнуть правой кнопкой мыши Новое меню (New Menu), и ввести имя этого меню в поле Имя (Name) появившегося окна. Одновременно можно задать ключ быстрого доступа к этому меню, поставив символ «&» перед буквой, которая будет этим ключом.

    Если  теперь щелкнуть имя нового меню, на экране под ним появится пустой прямоугольник.

    Диалоговое  окно Настройка позволяет просто добавить (скопировать) любое из встроенных меню к меню, которое Вы создаете. При этом исходное встроенное меню не изменяется. Для этого в диалоговом окне Настройка необходимо сделать модифицируемое меню видимым, а затем:

    1. Выбрать в списке Категории вкладки Команды команду Встроенные меню (Built-in Menus).
    2. Выбрать в списке Команды имя нужного встроенного меню и перетащить его на нужное место в панель меню, к которой Вы хотите добавить выбранное встроенное выпадающее меню. Знак I отмечает место на панели, куда попадет встроенное меню.

    Есть  и другой способ копирования встроенного  меню; для этого необходимо выбрать его на его собственной панели и перетащить в свою панель меню при нажатой клавише Ctrl.

    Чтобы добавить новое меню программно, нужно использовать метод Add коллекции CoramandBarControln, применив его к объекту типа CommandBar, который представляет панель нашего меню. Этот метод позволяет помещать на панель кнопки (CommandBarButton), комбинированные списки (CommandBarComboВох) и выпадающие меню (ComandBarPopup). Его вызов имеет вид:

выражение Add( Type, Id, Parameter, Before, Temporary),

где выражение должно возвратить объект типа CommandBarsControl, параметры в скобках необязательны. Параметр Туре (Тип) задает тип добавляемого объекта. Его значение msoControlPopup указывает, что добавляемый управляющий элемент — выпадающее меню. Для пользовательских меню параметры Id и Parameter можно опустить. Значение аргумента Before — число, указывающее положение нового элемента в последовательности элементов панели (если его нет, элемент помещается в конец). Определить имя и ключ быстрого доступа к созданному меню можно, задав значение свойства Caption.

    Вот как к панели «Головное меню» добавить выпадающее меню «Ввод документов» с ключом быстрого доступа «В»:

    Dim cstmlnputdocs As CommandBarControl

    Set cstmlnputdocs = ComaandBars ("Головное меню"). Controls

        .Add (Type: = msoControlPopup, Before: = 2)

    cstmlnputdocs. Caption = "&Ввод документов"

    Подменю (или дочернее меню) примыкает к  боковой стороне другого меню — родительского — на уровне той команды родительского меню, которая является заголовком подменю. Подменю можно добавлять как к выпадающим меню, так и к другим подменю и к всплывающим меню. Сначала добавляется пустое подменю, затем в него вставляются команды. Добавить подменю можно двумя способами: с помощью диалогового окна Настройка и через вызов метода Add в VBA.

    Рассмотрим  вначале визуальный способ. Для добавления подменю нужно, как и раньше, активизировать диалоговое окно Настройка и сделать модифицируемое меню видимым. После этого нужно действовать так.

  1. На вкладке Команды в списке Категории выбрать команду Новое меню.
  2. Выбрите команду Новое меню справа в списке Команды и перетащить ее в то место меню, куда нужно добавить подменю. Чтобы выпадающее меню открылось, показав уже имеющиеся в нем элементы, нужно перетащить Новое меню через имя выпадающего меню. При этом горизонтальная черта будет отмечать то место в списке рубрик выпадающего меню, куда попадет заголовок нового подменю.
  3. Щелкнуть правой кнопкой мыши Новое меню и ввести заголовок нового подменю в поле Имя появившегося окна. Одновременно можно задать ключ быстрого доступа к нему, поставив символ «&» перед той буквой, которая будет этим ключом.

     Теперь  при щелчке заголовка подменю  или слева от него появится пустое подменю.

     Чтобы добавить новое подменю программно, к объекту, представляющему родительское выпадающее меню, нужно применить метод Add коллекции CommandBarConlroIs. В качестве параметра Туре (Тип) нужно использовать значение msoControl Popup.

     В следующем примере в конец  выпадающего меню «Ввод документов», расположенного на панели меню «Головное меню», добавляется подменю «о движении товаров».

Dim cstPrMove As CoaeandBarControl

Set estPrMove = CommandBars («Головное меню"). Controls( "Ввод документов")

 .ContгоIs. Add(Type:=msoControlPopup)

cstPrMove. Caption = " о движении товаров"

Вставка и группировка  команд

    Office 97 позволяет добавлять команды к любым встроенным и пользовательским меню, а также изменять внешний вид, группировать и визуально отделять одну группу команд от другой.

    В диалоговом окне Настройка необходимо сделать модифицируемое меню видимым, а затем:

  1. На вкладке Команды выбрать в списке Категории категорию добавляемой команды — все команды данной категории будут показаны в списке Команды.
  2. Выбрать в списке Команды команду и перетащить в то меню или подменю, куда она добавляется. Чтобы выпадающее меню или подменю открылось, показав имеющиеся в нем элементы, протащить команду через заголовок соответствующего выпадающего меню или подменю. Горизонтальная черта отмечает место в списке команд выпадающего меню, куда попадет заголовок нового подменю, когда Вы отпустите кнопку мыши.

    Скопировать команду можно и иначе: вывести на экран меню с нужной командой и перетащить ее в свое меню при нажатой клавише Ctrl.

    Добавление команды с помощью окна Настройка в собственное или встроенное меню зависит от приложения Office 97, в котором оно выполняется.

  1. Microsoft Access. Чтобы добавить команду, запускающую на исполнение макрос, нужно выполнить те же действия, что и при добавлении встроенной команды. При этом в списке Категории выберите Все макросы (All Macros) и перетащить имя нужного макроса из списка Команды в меню. Вызов процедуры-функции вставляется, как и встроенная команда. Выбрать в списке Категории нужную категорию и перетащитm, затем нужный элемент из списка Команды в свое меню. Щелкнув этот элемент правой кнопкой мыши, в появившемся меню выбрать команду Свойства (Control Properties). На экране появится окно с тем же именем. В поле Подпись (Caption) этого окна необходимо заменить прежнее имя функции на новое (это будет имя команды в меню). В поле Действие (On Action) ввести выражение =имя-функции(), запускающее VBA-функцию на исполнение.
  2. Microsoft Excel. Действуя, как и при вставке встроенной команды, выбрать в списке Категории команду Макрос (Macros ) и перетащить элемент Настраиваемая команда меню (Custom Menu Item) из списка Команды в меню. Щелкнуть эту команду правой кнопкой мыши и выбрать в появившемся меню команду Назначить макрос (Assign Macro). Затем ввести в поле Имя (Macro Name) имя макроса, который должен запускаться командой меню.
  3. Microsoft Word и Microsoft PowerPoint. Как при вставке встроенной команды, выбрать в списке Категории команду Макрос и перетащить в меню имя нужного макроса из списка Команды.

    Добавить  новую команду в меню можно, применив метод Add коллекции CommandBarControls к объекту, представляющему изменяемое меню. Чтобы добавить собственную команду, необходимо вставить ее имя в меню, а затем в качестве значения свойства OnAction задать имя VBА-процедуры, которая должна вызываться при выборе данной команды. В качестве значения аргумента Туре (Тип) метода Add нужно указать msoControiButton, означающее, что вставляемый в меню элемент будет командой. Добавим команду «ввод накладной» в выпадающее меню «Ввод документов» из панели «Головное меню» на пятое место. Выбор этой команды запускает процедуру Inputlnvoice.

Dim NewCmd As CommandBarButton

Set NewCmd = CommandBars ("Головное мена"). Controls ("Ввод документов")

 .Controls. Add (Type:=msoControlButton, Before: =5)

 Kith NewCmd

 .Caption = "ввод накладной" ' имя команды меню         

 .OnAction = "Inputlnvoice" ‘ вызываемая процедура

End With

    Метод Add позволяет вставлять в меню и встроенные команды. Для этого при вызове необходимо задать значение параметра Id, равное числовому идентификатору данной команды в Office 97. Поскольку в Office 97 количество команд доходит до 4000, здесь будет приведено лишь два фрагмента из начала таблицы идентификаторов, включающих, в частности, некоторые популярные команды из меню File и Edit. 
 

2. “&Spelling…” (Орфография)                             

3. “&Save” (Сохранить)

4. “&Print…” (Печать)

10. “&New…” (Создать)

19. “&Copy” (Копировать)

21. “&Cut” (Вырезать)

22. “&Paste” (Вставить)

23. “&Open…” (Открыть) 
 

Вот как  в меню «Проверки» из панели «Головное  меню» можно вставить команду проверки правописания Spelling.

    Set mySpell = CommandBars («Головное меню»). Controls («Проверки») _ Controls. Add (Id: = 2)

    Разделение  групп логический связанных команд меню горизонтальными линиями позволяет  пользователям более эффективно работать с большим меню, содержащим разнотипные команды. Сами разделяющие линии командами не являются. Установить или убрать их можно в диалоговом окне Настройка. Для этого в этом окне необходимо сделать видимым модифицируемое меню. Затем щелкнуть правой кнопкой мыши команду, над которой нужно провести линию. В появившемся меню выбрать команду Начало группы  (Begin Group). Убирается линия аналогично.

    Ту  же задачу разбиения команд на группы можно решить из VBA, присвоив значение True свойству Begin Group (Начало группы) объекта, представляющего команду, которая должна открывать очередную группу. Чтобы убрать разделяющую линию, нужно присвоить этому свойству False. Вот как выделять группу команд меню «Ввод документов», начинающуюся со вставленной команды «ввод накладной»:

    Set InvCommand = CommandBars («Головное меню»). Controls («Ввод документов») _

    . Controls («ввод накладной»)

InvCommand. BeginGroup = True

    Удаление команд меню

    Удаление  команд и целых выпадающих и вспомогательных  меню позволят упростить работу с приложением, приспособить его к нуждам отдельного пользователя. В Office 97 можно удалять встроенные и пользовательские выпадающие меню из панелей меню, дочерние подменю из родительских меню команды из всех видов меню. Единственное, чего сделать нельзя — удалять встроенную панель меню или встроенное всплывающее меню, даже если из них уделены все команды.

    Удаленные из меню встроенные подменю и команды  можно затем восстановить. Собственные  удаленные подменю и команды  придется при необходимости воссоздавать заново.

    Для удаления компонента меню в диалоговом окне Настройка модифицируемое меню сделать видимым, щелкнуть правой кнопкой мыши удаляемый элемент и в появившемся меню выбрать команду Удалить (Delete).

    Чтобы целиком удалить пользовательскую панель меню нужно перейти на вкладку Панели инструментов диалогового окна Настройка и, выбрав в списке Панели инструментов имя удаляемой панели меню, щелкнуть кнопку Удалить.

    Для удаления компонента меню используется метод Delete (Удалить). Этот оператор, например, выпадающее меню Favorites из панели меню Web:

    CommandBars («Web»). Controls («Favorites»). Delete

    Собственную (пользовательскую) панель меню «Головное меню» можно целиком удалить оператором:

    CommandBars («»Головное меню). Delete

Восстановить  можно только встроенный удаленный элемент меню. Как и другие действия над меню, это делается в окне Настройка или из VBA. Если при этом восстановится заголовок выпадающего меню или подменю, вместе с ним вместе с ним восстановится само меню и все его потомки.

   Как всегда в диалоговом окне Настройка нужно сделать модифицируемое меню видимым. Затем, щелкнув правой кнопкой мыши заголовок выпадающего меню или подменю, которое нужно восстановить, в появившемся меню нужно выбрать команду Сброс (Reset).

   Восстановить  встроенный компонент меню программно можно методом Reset. Например, следующий оператор восстанавливает выпадающее меню Favorites из панели меню Web:

   CommandBars («Web»). Controls («Favorites»). Reset

   А вот как восстановить всю панель меню Menu Bar из Word:

   CommandBars («Menu Bar»). Reset 
 
 
 
 
 

 

Условие задачи: 

Рассчитать годовой  удой с одной коровы, если
через полгода будет выбраковано n коровы (отсчет от 1 июня)
по  данной производственной формуле Y=(((A*U)*T)/A)-(((n*U)*k)/n)
A - поголовье скота (55 коров)
T - лактационный период (300 дн.)
U - средний удой молока в день  от одной коровы (15 кг.)
n - выбракованные коровы  
k - кол-во дней, когда выбракованные  коровы давали молоко 

Блок-схема:

 
 
 
 
 
 
 
 
 
 
 
 

 
 

 
 
 

 

 
 
 

 

 
 
 

 

 
 
 

 
 
 
 
 

Текст решения задачи: 
 

Макрос  перехода с титульного листа на линейный процесс: 

Sub Макрос1()

'

' Макрос1 Макрос

' Макрос записан  12.11.2010 (student)

' 

'

    Sheets("Лин_процесс").Select

End Sub 
 

Макрос  кнопки пересчета  решения задачи: 

Sub пересчитать()

'

' пересчитать Макрос

' Макрос записан  12.11.2010 (student)

' 

'

    ActiveCell.FormulaR1C1 = _

        "=(((R[-6]C*R[-4]C)*R[-5]C)/R[-6]C)-(((R[-3]C*R[-4]C)*R[-2]C)/R[-3]C)"

    Range("C18").Select

End Sub 
 

Макрос  выполнения задачи: 

Public Sub Лин_РЛ_2()

Dim Y, A, T, U, n, k

A = Worksheets("Лин_процесс").Range("C3").Value

T = Worksheets("Лин_процесс").Range("C4").Value

T = Worksheets("Лин_процесс").Range("C5").Value

n = Worksheets("Лин_процесс").Range("C6").Value

k = Worksheets("Лин_процесс").Range("C7").Value

Worksheets("Лин_процесс").Range("C8").Value = Y

End Sub 
 
 

Макрос  линейных окон: 
 

Sub Лин_окна_2()

Dim Z As Single

A = InputBox("Введите A", "Ввод данных")

T = InputBox("Введите T", "Ввод данных")

U = InputBox("Введите  U", "Ввод данных")

n = InputBox("Введите  n", "Ввод данных")

k = InputBox("Введите  k", "Ввод данных")

Y = (((A * U) * T) / A) - (((n * U) * k) / n)

MsgBox Y, "Вывод Y"

End Sub 
 

Макрос функции: 
 

Public Function Yfun(A As Single, T As Single, U As Single, n As Single, k As Single) As Single

Yfun = (((A * U) * T) / A) - (((n * U) * k) / n)

End Function 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Алгоритм  решения задачи. 

    1. Вызвать «Microsoft Excel», нажатием «Пуск» → «Все программы» → «Microsoft Office» → «Microsoft Excel». Присвоить новой рабочей книге имя ShEA_23b.exl, где первые три буквы соответствуют инициалам (первые буквы фамилии, имени, отчества), а цифры номеру группы.

  
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    2. Присвоить первому рабочему листу имя «Титул», а второму – «Лин_процесс».

 
 
 
 
 
 

3. На первом листе («Титул») разработать титульный лист заданий по VBA.

 
 
 
 
 
 
 
 
 
 

    4. Создать на листе «Титул» кнопку «Лин_процесс», нажатием «Вид» → «Панель инструментов» → «Формы». На появившейся панели выбрать фигуру «кнопка». 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    5. Написать макрос перехода на другой лист, нажатием кнопки «Лин_процесс». Вызвать «Сервис» → «Макрос» → «Редактор Visual Basic» → «Insert» → «Module». В появившемся окне написать: 

Sub Макрос1()

'

' Макрос1 Макрос

' Макрос записан  12.11.2010 (student)

' 

'

    Sheets("Лин_процесс").Select

End Sub

 

6. На листе «Лин_процесс» разместить условия задачи.

 
 
 
 
 
 
 
 
 
 
 
 
 

    7. Под текстом задачи составить таблицу по условию данной задачи. Ячейка A11Название, ячейка C11Кол-во.

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    8. В ячейке С18  записать формулу =(((C12*C14)*C13)/C12)-(((C15*C14)*C16)/C15. 

 
 
 
 

   9. Под составленной таблицей разместить кнопку «Посчитать», прописав ей макрос. Проверить работу кнопки. 
 

 
 
 
 
 
 
 
 
 
 
 
 
 

Sub пересчитать()

'

' пересчитать  Макрос