как сделать меню в visual basic 2019
Как сделать меню в visual basic 2019
Дата публикации статьи: 09.01.2004 12:59
Тихвинский Виталий
VBA Создание меню
Содержание
Обращение к меню происходит через объекты CommandBars и ActiveMenuBar. Ниже приведены примеры обращения к свойству Index меню с именем “text” и к головному активному меню приложения:
Меню можно создать методом add объекта CommandBars.
Ниже приведены два примера создание головного и контекстного меню:
Примечание:
Контекстное и головное меню созданное пользователем существует пока не закрыто приложение, после закрытия которого, контекстное и головное меню удаляется из него.
Головное меню пользователя можно вывести через свойство Visible, а контекстное меню через метод ShowPopup. Если пользователь создал головное меню и вывел его, то оно заменяет стандартное меню приложения и существует пока приложение не закрыли, или пока это меню не удалили.
Пример: В данном примере показано как вывести контекстное и головное меню приложения.
Меню пользователя можно удалить через свойство Delete. Через свойство Reset можно очистить меню пользователя или меню приложения от добавленных пунктов.
Пример:
Примечание:
Если вы хотите добавить в меню подпункты четвертого и далее уровня, то вам необходимо дорастить пункт меню третьего уровня односеансным контекстным меню (см. Односеансное контекстное меню)
Можно создать односеансное контекстное меню. Такое меню наиболее удобно внутри приложения Excel. Т.к. в данном приложении лист Excel имеет событие, которое отлавливает нажатие правой клавиши мыши на нем. Что позволяет заблокировать вывод стандартного контекстного меню, и вывести вместо него свое. К сожалению, документ Word не имеет такого события, и в приложении Word возможно только добавление пунктов в стандартные контекстные меню. Поэтому в приложении Word функцию СоздатьКонтекстноеМеню можно запускать только как процедуру, для продолжения подпунктов меню третьего уровня (О чем рассказано в конце данной главы).
Для того, что бы заблокировать контекстное меню на листе Excel необходимо в модуле соответствующего листа, в событийной процедуре BeforeRightClick установить значение входного параметра Cansel на True. Через свойства Column и Row обьекта Target можно заблокировать вывод стандартного контекстного меню в определенной области листа.
Пример: В данном примере заблокировано стандартное контекстное меню до второго столбца и четвертой строки включительно.
Для создание контекстного меню необходимо в модуле общих подпрограмм проекта создать функцию: В том же модуле необходимо иметь процедуру ДанныеМеню, которая нами описана в главе Добавление пунктов в меню. В той же главе рассказано о входном параметре ПунктыМеню процедуры ДобавитьПункты. Этот параметр соответствует параметру ПунктыМеню функции СоздатьКонтекстноеМеню. Переключать в пункте односеансного контекстного меню строится не так, как переключатель созданный процедурами ДобавитьПункты.
Пример: В данном примере создается на листе Excel контекстное меню с переключающимся пунктом.
Функцию СоздатьКонтекстноеМеню можно запускать и как процедуру, например, для продолжения подпунктов второго уровня, непосредственно из событийных процедур пунктов меню второго уровня(в приложении Word данную функцию нужно запускать из подпунктов меню третьего уровня).
Пример: В данном примере после нажатия правой клавишей мыши на соответствующем листе и после выбора соответствующих пунктов меню, контекстное меню примет вид:
Т.к. пункт меню через свойство OnAction может быть связан с процедурой не имеющей входных параметров, а процедура без входных параметров в VBA для Word и Excel является макросом, то назначение управляющих клавиш для соответствующих макросов, соответствует назначению управляющих клавиш для пунктов меню, которые закреплены за ними.
Управляющие клавиши для макросов могут быть назначены через меню приложения и программно.
В программе Excel управляющие клавиши назначаются следующим образом:
Примечание:
Через меню приложения Excel можно назначить сочетание клавиш только в комбинации с клавишей CTRL или CTRL+SHIFT, но программно в данном приложении можно ввести и другие комбинации управляющих клавиш.
В приложении Excel программно можно назначить клавиши макросу через метод OnKey объекта Application. Метод OnKey имеет два входных параметра Key – для назначение комбинаций клавиш, и Procedure – для ввода имени макроса, которому назначаются управляющие клавиши (перед именем макроса может быть имя одной из загруженных книг Excel в которой макрос находится см. пример ниже. Имя книги общих макросов – “PERSONAL.XLS”). Если параметр Procedure опущен, то указанная комбинация клавиш снимается с макроса, на который она была установлена. Если параметр Procedure имеет значение пустой строки, то указанная комбинация клавиш блокируется в Excel. Комбинация клавиш задается в строковом формате, клавиши в строке кодируются следующим образом:
В данном примере назначаются управляющие клавиши Alt+1 макросу Пункт1, и клавиши Ctrl+Shift+A макросу ПунктA находящемуся в Excel файле с именем “Моя книга”. И снимается зарезервированная комбинация управляющих клавиш CTRL+Shift+B с макроса проекта.
В приложении Word управляющие клавиши макросу назначаются через метод Add объекта KeyBindings, и удаляются через метод Disable объекта FindKey. В методе Add объекта KeyBindings имеется входной параметр KeyCode, который определяет комбинацию управляющих клавиш, и входной параметр Command, который задает имя макроса. Функция BuildKeyCode предназначена для задания кода управляющих клавиш входному параметру KeyCode. Функция BuildKeyCode может иметь от одного, до 4 входных аргументов, которые задаются соответствующими константами: Через свойство CustomizationContext можно установить тип документа, в который добавляется, или в котором удаляется комбинация управляющих клавиш.
Пример:
Примечение радактора
Скрепя сердце я публиковал эту статью, глядя на «русские» имена переменных и имен функций. Сама статья достаточно подробна и проста для понимания даже начинающим, но именно за них я и боюсь. Настоятельно рекомендую использовать только символы 6, _ и [A-Z], [a-z] в именах переменных. Даже в случае приложений написанных на Visual Basic for Applications, где поддерживаются подобные имена.
Создание настраиваемых и контекстных меню с помощью макросов
С помощью макроса Access можно создавать настраиваемые ярлыки, которые появляются при щелчке правой кнопкой мыши формы, отчетов или отдельных элементов управления. Вы также можете создавать настраиваемые меню, которые отображаются на ленте для определенных форм или отчетов.
Чтобы создать меню с помощью макроса, выполните три основных действия:
Создайте объект макроса с вуа макросами, которые содержат команды меню.
Создайте другой объект макроса, создав само меню.
Прикрепить меню к окнам управления, форме, отчету или к базе данных в целом.
В следующих разделах подробно по шагам.
Примечание: Вы используете Access 2007? В этом случае перепишитесь на раздел «Создание настраиваемой области быстрого меню в Access 2007».
Совет: Если вы хотите узнать, как создавать настраиваемые сочетания клавиш в Access с помощью кода Visual Basic для приложений (VBA), см. статью «Создание ярлыка для формы,формы или отчета».
Шаг 1. Создание объекта макроса с вуа макросами, которые содержат команды меню
На этом шаге вы создайте объект макроса с вуа макросами, каждый из которых будет отдельной командой в вашем shortcut-меню.
С помощью в макроса внутри объекта макроса можно определить набор макро действий. Макрос в объекте макроса можно называть отдельно от различных событий control и object. Каждый вема макрос внутри объекта макроса имеет уникальное имя и может содержать одну или несколько макрокомассов.
На вкладке Создание в группе Макросы и код нажмите кнопку Макрос.
Для каждой команды, необходимой в настраиваемом меню:
Добавьте в окно конструктора макроса макрос «Вложить макрос» и привяжите его к нужному в shortcut-меню (например, «Печать» или «Обновить»).
Совет: Чтобы создать клавишу доступа для выбора команды с помощью клавиатуры, введите перед буквой &, которая должна быть клавишей доступа (например, «&Обновить»), перед буквой, которая должна быть клавишей доступа. Эта буква будет подчеркивается в меню.
Выберите первое действие, которое будет происходить при выборе команды в shortcut-меню.
Если при выборе этой команды вы хотите сделать несколько действий, добавьте их в качестве отдельных макрокомаманд в одном в макросах.
Сохраните и назовите объект макроса, например mcrShortcutMenuCommands.
На рисунке ниже показан пример объекта макроса с тремя в субподрядными макросами для пользовательского меню или быстрого меню.
Шаг 2. Создание второго объекта макроса, создав меню
Этот шаг может показаться избыточным, но для создания ярлыка на объекте макроса, созданного на шаге 1, необходимо создать второй объект макроса, содержащий макрокоматуру «ДобавитьМеню». Эта макроса иногда называется «макрос меню».
На вкладке Создание в группе Макросы и код нажмите кнопку Макрос.
В окне конструктора макроса в поле со полем со полем «Добавить новую макрокомаанту» выберите «Добавитьменю».
В поле аргумента «Имя меню» макроса «ДобавитьМеню» введите название меню (например, «Команды формы»). Этот аргумент не является требоваться, но рекомендуется, если на этапе 3 вы планируете добавить меню на вкладку ленты (например, вкладку «Надстройки» формы или отчета). Если на шаге 3 меню добавлено в качестве ярлыка, аргумент «Имя меню» игнорируется.
В поле аргумента «Имя макроса» введите имя объекта макроса, созданного на шаге 1.
Сохраните и назовите второй объект макроса, например mcrAddShortcutMenu.
На следующем рисунке показан пример объекта макроса меню, который создает меню, разработанное на шаге 1.
Шаг 3. Прикрепить меню к control, форме, отчету или базе данных
В зависимости от того, где должно отображаться меню, воспользуйтесь одной или несколько из следующих процедур.
Добавление меню на вкладку Add-Ins формы или отчета
Используйте эту процедуру, если нужно, чтобы меню появлялось на вкладке «Надстройки» для определенной формы или отчета.
В области навигации щелкните правой кнопкой мыши форму или отчет, в которых должно отображаться меню, и выберите пункт «Конструктор».
На вкладке Конструктор в группе Сервис нажмите кнопку Окно свойств.
Вы можете выбрать весь объект, выбрав «Форма» или «Отчет» из списка в верхней части области задач «Лист свойств».
На вкладке «Другие» окна свойств введите имя объекта макроса, созданного на шаге 2 (в данном примере — mcrAddShortcutMenu).
Сохраните изменения формы или отчета.
Когда вы откроете форму или отчет в следующий раз, на ленте появится вкладка «Надстройки». Щелкните вкладку, чтобы увидеть меню, как показано на следующем рисунке:
Дополнительные сведения о методах настройки ленты, таких как добавление настраиваемых вкладок или скрытие вкладок по умолчанию, см. в статье «Создание пользовательской ленты в Access».
Добавление меню в качестве быстрого меню для формы, отчета или управления
Используйте эту процедуру, если нужно, чтобы меню появлялось при щелчке правой кнопкой мыши по определенной форме, отчету или окнам.
В области навигации щелкните правой кнопкой мыши форму или отчет, в которых должно появиться shortcut-меню, и выберите пункт «Конструктор».
На вкладке Конструктор в группе Сервис нажмите кнопку Окно свойств.
Выберите один или несколько объектов, к которым вы хотите прикрепить shortcut-меню.
Чтобы выбрать весь объект, выберите форму или отчет из списка в верхней части области задач «Лист свойств».
На вкладке «Другие» окна свойств в поле свойства «Shortcut Menu Bar» введите имя объекта макроса, созданного на шаге 2 (в данном примере — mcrAddShortcutMenu).
Убедитесь, что для свойства «Меню ярлыка» установлено слово «Да».
Сохраните изменения формы или отчета.
Когда вы в следующий раз откроете форму или отчет, а затем щелкните форму, отчет или команду правой кнопкой мыши, вы увидите меню со связанными командами, как показано на следующем рисунке:
Добавление меню в качестве глобального быстрого меню
Эта процедура заменяет все стандартные сочетания клавиш в текущей базе данных. Это не влияет на настраиваемые сочетания меню, прикрепленные к определенным формам, отчетам или элементу управления.
Выберите Файл > Параметры.
В диалоговом окне Параметры Access щелкните элемент Текущая база данных.
В области «Параметры ленты» и «Параметры панели инструментов» введите имя макроса, созданного на шаге 2 (в данном примере — mcrAddShortcutMenu).
Нажмите кнопку «ОК», чтобы сохранить изменения в диалоговом окне «Параметры Access».
Чтобы изменения вступили в силу, закройте и снова откроете базу данных.
Настраиваемые shortcut menus заменяют стандартные shortcut menus для объектов, к которые они прикреплены. Если вы хотите сохранить некоторые команды Access для использования в этих меню, с помощью макрокоманды «ВыполнитьКоманд» поместите команды в объекты макроса для нужных меню.
Настраиваемые shortcut menu, присоединенные к control, выделает все прочие настраиваемые меню, определенные в базе данных. Настраиваемые ярлыки, прикрепленные к форме или отчету, являются глобальными.
При указании макроса меню для формы, отчета или базы данных Access запускает этот макрос меню при запуске формы, отчета или базы данных. Если вы изменяете объект макроса меню или объект макроса, который определяет его команды, когда открыта форма, отчет или база данных, необходимо закрыть форму, отчет или базу данных и снова открыть ее, чтобы увидеть изменения.
Чтобы создать подменю в списке команд, выполните шаг 1, чтобы создать отдельный объект макроса, который содержит только команды подменю, как показано на следующем рисунке:
Затем снова выполните шаг 1, чтобы определить команды для объекта меню более высокого уровня. Добавьте подменю в качестве элемента в объект макроса более высокого уровня с помощью макрокомассии «ДобавитьМеню». На рисунке ниже показан объект макроса для меню, которое содержит подменю. Третий в том же примере объект макроса создает подменю «Экспорт в. « (mcrShortcutSubMenuCommands).
На следующем рисунке показано итоговое меню с подменю:
Вы можете создать несколько уровней в подменю с помощью макроса «ДобавитьМеню» в объектах макроса для каждого уровня меню. Убедитесь, что для каждой действия AddMenu задайте значение аргумента «Имя меню». В противном случае подменю будет отображаться в качестве пустой строки в меню более высокого уровня.
Условия выражения макроса с использованием блоков «Если/затем» и «Иначе» поддерживаются только в объекте макроса верхнего уровня меню. Другими словами, с помощью выражения условия в объекте макроса меню можно определить, будет ли отображаться определенное меню или ярлык, но только для меню верхнего уровня. Вы не можете использовать выражения условий для отображения или скрытие команд или подменю в меню. Вы также можете использовать выражение условия, чтобы скрыть или показать настраиваемые или глобальные сочетания клавиш.
При желании макрос меню, который вы создаете на шаге 2, может быть частью объекта макроса. Например, если у вас есть несколько ярлыков для разных объектов или элементов управления, можно создать один объект макроса, содержащий все необходимые макрос. Убедитесь в том, что у каждого вемака будет уникальное имя. На шаге 3 используйте следующую нотацию для ссылки на макрос: MacroObjectName.SubmacroName. Например, mcrAddShortcutMenus.AddMenu2.
Создание настраиваемой shortcut-menus в Access 2007
Окно конструктора макроса отличается в Access 2007 от более поздних версий, поэтому если вы используете Access 2007, раз развернуть следующие разделы.
На этом шаге создается группа макроса, каждый из которых будет отдельной командой в вашем ярлыке.
Что такое группа макроса?
Группа макроса — это один объект макроса, содержащий несколько независимых макроса. Отдельные макросы можно определить по имени каждого из них в столбце «Названия макроса». На рисунке ниже «Макрос3» — это группа макроса. NotFoundMsg и FoundMsg — это отдельные макрос в группе, каждый из которых состоит из двух макроса.
Примечание: По умолчанию столбец «Имя макроса» скрыт. Чтобы отобразить столбец «Имя макроса», на вкладке «Конструктор» в группе «Показать или скрыть» нажмите кнопку «Имена макроса».
Откройте вкладку Создание и в группе Другие нажмите кнопку Макрос. Если она недоступна, нажмите стрелку под кнопкой Модуль или Модуль класса, а затем нажмите кнопку Макрос.
На вкладке «Конструктор» в группе «Показать или скрыть» щелкните «Имена макроса», чтобы отобразить столбец «Имя макроса».
Для каждой команды, необходимой в настраиваемом меню:
В столбце «Имя макроса» введите текст, который вы хотите отобразить в shortcut-меню (например, «Печать отчета» или «Сохранить»).
В столбце «Действие» выберите первое действие, которое будет происходить при выборе команды в shortcut-меню.
Если вы хотите, чтобы при выборе этой команды были другие действия, добавьте их в последующие строки. Для каждой последующей макроса оставьте ячейку «Имя макроса» пустой.
Примечание: Чтобы создать линию между двумя командами меню, введите дефис (-) в столбце «Имя макроса» между соответствующими командами меню.
Сохраните и привяжу макрос, например mcrShortcutMenuCommands.
На рисунке ниже показан пример группы макроса для пользовательского или быстрого меню.
Этот шаг может показаться избыточным, но чтобы создать shortcut-меню из группы макроса, созданной на шаге 1, необходимо создать второй макрос, содержащий макрокоматуру «ДобавитьМеню». Этот макрос иногда называется «макрос меню».
Откройте вкладку Создание и в группе Другие нажмите кнопку Макрос. Если она недоступна, нажмите стрелку под кнопкой Модуль или Модуль класса, а затем нажмите кнопку Макрос.
В первой строке макроса выберите «ДобавитьМеню» в списке действий.
В поле «Имя меню»в поле «Аргументы действия» введите название меню (например, «Команды отчета»). Этот аргумент не является требоваться, но рекомендуется, если на этапе 3 вы планируете добавить меню на вкладку ленты (например, вкладку «Надстройки» формы или отчета). Если на шаге 3 меню добавлено в качестве ярлыка, аргумент «Имя меню» игнорируется.
В поле «Имя макроса» введите имя макроса, созданного на шаге 1.
Сохраните и примените имя макроса, например mcrAddShortcutMenu.
На следующем рисунке показан пример макроса меню, который создает меню, разработанное на этапе 1.
В зависимости от того, где должно отображаться меню, воспользуйтесь одной или несколько из следующих процедур.
Добавление меню на вкладку Add-Ins формы или отчета
Используйте эту процедуру, если нужно, чтобы меню появлялось на вкладке «Надстройки» для определенной формы или отчета, как показано на следующем рисунке:
В области навигации щелкните правой кнопкой мыши форму или отчет, в которых должно отображаться меню, и выберите пункт «Конструктор».
На вкладке Конструктор в группе Показать или скрыть выберите пункт Страница свойств.
Вы можете выбрать весь объект, выбрав «Форма» или «Отчет» из списка в верхней части области задач «Лист свойств».
На вкладке «Другие» окна свойств введите в поле свойства «Меню ярлыка» имя макроса, созданного на шаге 2 (в данном примере — mcrAddShortcutMenu).
Когда вы откроете форму или отчет в следующий раз, на ленте появится вкладка «Надстройки». Щелкните вкладку, чтобы увидеть меню.
Дополнительные сведения о методах настройки ленты, таких как добавление настраиваемых вкладок или скрытие вкладок по умолчанию, см. в статье «Создание пользовательской ленты в Access».
Лента входит в Пользовательский интерфейс Microsoft Office Fluent.
Добавление меню в качестве быстрого меню для формы, отчета или управления
Используйте эту процедуру, если нужно, чтобы меню появлялось, если щелкнуть правой кнопкой мыши определенную форму, отчет или управление, как показано на рисунке ниже:
В области навигации щелкните правой кнопкой мыши форму или отчет, в которых должно появиться shortcut-меню, и выберите пункт «Конструктор».
На вкладке Конструктор в группе Показать или скрыть выберите пункт Страница свойств.
Выберите один или несколько объектов, к которым вы хотите прикрепить shortcut-меню.
Примечание: Чтобы выбрать весь объект, выберите форму или отчет из списка в верхней части области задач «Лист свойств».
На вкладке «Другие» окна свойств в поле свойства «Shortcut Menu Bar» введите имя макроса, созданного на шаге 2 (в данном примере — mcrAddShortcutMenu).
Добавление меню в качестве глобального быстрого меню
Эта процедура заменяет все стандартные сочетания клавиш в текущей базе данных. Это не влияет на настраиваемые сочетания меню, прикрепленные к определенным формам, отчетам или элементу управления.
Нажмите кнопку Microsoft Office и выберите «Параметры Access».
В диалоговом окне Параметры Access щелкните элемент Текущая база данных.
В области «Параметры ленты» и «Параметры панели инструментов» введите имя макроса, созданного на шаге 2 (в данном примере — mcrAddShortcutMenu).
Настраиваемые shortcut menus заменяют стандартные shortcut menus для объектов, к которые они прикреплены. Если вы хотите сохранить некоторые команды Access для использования в этих меню, воспользуйтесь макрокомандой «ВыполнитьКоманд», чтобы поместить команды в группы макроса для нужных меню.
Настраиваемые shortcut menu, присоединенные к control, выделает все прочие настраиваемые меню, определенные в базе данных. Настраиваемые ярлыки, прикрепленные к форме или отчету, являются глобальными.
При указании макроса меню для формы, отчета или базы данных Access запускает этот макрос меню при запуске формы, отчета или базы данных. При внесении изменений в макрос меню или группу макроса, определяемую его командами, когда открыта форма, отчет или база данных, необходимо закрыть форму, отчет или базу данных и снова открыть ее, чтобы увидеть изменения.
Чтобы создать подменю, выполните шаг 1, чтобы создать отдельную группу макроса, которая содержит только команды подменю. Затем снова выполните шаг 1, чтобы определить команды для меню более высокого уровня. Добавьте подменю в качестве элемента в группу макроса более высокого уровня с помощью макрокомассии «ДобавитьМеню». На следующем рисунке показана группа макроса для меню, которое содержит подменю, а затем показана итоговая группа ярлыка. Третья строка в группе макроса создает подменю «Экспорт в. « (mcrSubMenu).
С помощью действий AddMenu в группах макроса для каждого уровня меню можно создать несколько уровней подменю. Убедитесь, что для каждой действия AddMenu задайте значение аргумента «Имя меню». В противном случае подменю будет отображаться в качестве пустой строки в меню более высокого уровня.
Условия макроса поддерживаются только в макросах верхнего уровня. Другими словами, с помощью условия в макросах меню можно определить, будет ли отображаться определенное меню или ярлык, но только для меню верхнего уровня. С помощью условий нельзя отобразить или скрыть команды или подменю в меню. Вы также можете использовать условие, чтобы скрыть или показать настраиваемые или глобальные сочетания клавиш.