Работа с ленти с инструменти и менюта на VBA

Работа с ленти с инструменти и менюта на VBA, CommandBar обект, CommandBarControl, CommandBarPopup, контекстни менюта

Много често при прилагането на VBA, ще се наложи свой собствен набор от менюта и ленти с инструменти, а не на стандарта, осигурен от приложението. Използване на менютата и лентите с инструменти осигурява набор от CommandBars. която е обект на прилагането (около този важен въпрос ще обсъдим в следните модули). събиране CommandBars съдържа, както подсказва името, набор от обекти CommandBar (ленти с инструменти и менюта), всеки един от тях от своя страна - на CommandBarControls събиране (набор от елементи, които изграждат панел / меню), и тази колекция е хранилище на елементи от от които се състои от менюто. Такива елементи могат да бъдат три:

  • CommandBarButton - бутон или меню елемент, който се използва, за да стартирате програмата или подпрограма;
  • CommandBarComboBox - сложно меню / Control Panel (поле за въвеждане, падащ списък от падащото меню);
  • CommandBarPopup - менюто или подменюто.

Пример за създаване на своя собствена лента с инструменти може да изглежда много проста:

Дим CBar1 Както CommandBar

Задайте CBar1 = CommandBars.Add ( "Документи", msoBarTop)

Имаме нов лентата с инструменти на документи (виж Фигура 8.1 ..), което може, например, да се премахне настройките на менютата -> Toolbars, обаче, докато той е напълно безполезно: тя няма никакви бутони. За да може те да се показват, трябва да добавите нов тип елемент CommandBarControl (един от трите вида, изброени по-горе) CommandBarControls колекция за това меню.

Работа с ленти с инструменти и менюта на VBA

Фиг. 8.1 В центъра на картината - празен лентата с инструменти Документи

Но първо - за някои от най-важните свойства и методите на CommandBar обекти:

  • BUILTIN - Този имот определя дали даден панел / меню построен за това приложение (това означава, че разработчиците на приложения Office условие). Променете стойността на този имот е невъзможно. Този имот е много удобно да се използва, за да се отстранят всички основното меню, или, обратно, за да се отстранят всички менюто си, оставяйки само на стандарта;
  • Контекст - определя къде точно кода за меню (на Normal.dot, документ, файл и т.н.). Тя може да се използва за проверки в случай на евентуални разговори различни менюта със същите имена;
  • Контроли - чрез този имот могат да бъдат достъпни CommandBarControls колекция от контрол, че ние сме склонни да се наложи;
  • Enabled - "включване / изключване" панел;
  • Височина. Ляв. Най-високо и W idth - очевидни свойства, свързани с адресната лента в прозореца на приложението;
  • Index. Име и NameLocal - тези свойства позволяват да се намери десния панел в колекцията CommandBars. Име - името на един софтуерен обект, NameLocal - името, което ще бъде видим за потребителя, Index - това е просто номер на панела;
  • Защита - ви позволява да предотвратите потребителя да премахне старите бутони от панела или поставете нова за нея;
  • Тип - може би най-важното свойство. Определя какво ще този панел / меню (лента с инструменти, меню, или по обичайния контекстното меню, достъпно с десен бутон). Въпреки това, този хотел е само за четене. CommandBar тип обект се определя при метода Добави събиране () CommandBars, с много умело определя - през втория параметър на метода. В нашия случай, наричайки този метод изглежда като

Задайте CBar1 = CommandBars.Add ( "Документи", msoBarTop, Вярно е, False)

Първият параметър ( "Документи") - е, разбира се, името на (името панел) на обект. Вторият параметър (msoBarTop) - разпоредба на закачен панел (msoBarTop, msoBarBottom, msoBarLeft, msoBarRight) или знак, че nepristykovana панел (msoBarFloating), или като цяло посочване на факта, че тя е - контекстното меню, която трябва да кликнете с десен бутон не видима (msoBarPopup). Видим имот за контекстното меню не се прилага.

Как ще изглежда в крайния панел - както от менюто или лентата с инструменти зависи от това кои предмети да поставите там.

След създаването на панела е завършена, е необходимо да се поставят елементи. Например, създаването на лентата трябва да изглежда така:

Дим But1 Както CommandBarControl

Определете But1 = CBar1.Controls.Add (msoControlButton)

But1.Caption = "Бутон 1"

Изглежда, че нищо не се случи - ние виждаме една и съща празен панел. Въпреки това, ако се движите показалеца на мишката в горната част на панела, е възможно да се видят празна бутон, който се нарича "бутон 1" (вж. Фиг. 8.2).

Работа с ленти с инструменти и менюта на VBA

Фиг. 8.2 От документите на лентата с инструменти се появяват почти невидим бутон 1

Както се вижда от кода, който се използва за създаване на контрола (бутон в лентата с инструменти) Добавяне () метод за събиране Контроли на CommandBar обект (ние го нарича CBar1). Свойства и методи в тази колекция са стандартни, както и в много други колекции:

  • имот Заявление връща препратка към обекта на приложение (Word, Excel и т.н.)
  • Граф собственост позволява да знаете колко всички контроли, поставени в тази колекция;
  • Точка собственост позволява на индекса (брой), за да получи контрол на референтен обект CommandBarControl в тази колекция;
  • метод Добави () (който се възползва от) ви позволява да добавите контрол в тази колекция (премахване на контрола вече извършва по метода Delete () на самата контрола).

Дим But1 Както CommandBarControl

Определете But1 = CBar1.Controls.Add (msoControlPopup)

But1.Caption = "Меню 1"

Работа с ленти с инструменти и менюта на VBA

Фиг. 8.3 На панела сме създали инструменти появиха меню

Останалите параметри на техниката включват създаването на ID контрол, позицията си спрямо други контроли, и дали тя трябва да бъде постоянно или временно.

Разбира се, работата с контролния панел / меню не е завършена. Имаме нужда от повече променяте свойствата на контролите. Например, един бутон в първия пример, ние, като минимум, ние също трябва да се определи по-голям, което е върху бутона и процедурата е, че когато кликнете върху него ще се нарича. За CommandBarButton възрази най-важните свойства, методи и събития са изброени по-долу:

  • Надпис - надписа на управление. За бутона се показва като върха инструмент, тъй като тя е за опцията в менюто - името на т.
  • Позволено - за да разрешите или забраните контрола ActiveX. Той обикновено се използва за предотвратяване на грешки на потребителите.
  • FaceID (само за бутони) - способността да се възползват от системата за снимката на бутона (без да се присвои подходящ функция S). Така например, на стойност 4 ще зададе изображение на принтера. няколко хиляди икони, вградени в Word и Excel, и така, вместо да създавате икони, винаги има възможност за избор на готовност.
  • Id - ID на вградената функция зададена на този бутон. Ако зададете този бутон процедурата за потребителя, а след идентификатора на стойност не е винаги един.
  • Index - броят на контрола в колекцията Controls. Той се използва за извършване на всички операции за услуги с контролите.
  • Маска - възможност да се постави върху модела маска на обекта, за да се показват само част от картината. Маската се появява като отделен изображение, прозрачна част на който трябва да е бяла непрозрачна и - черно.
  • OnAction - най-важната собственост на контрола. Неговата стойност се използва, когато се активира контрол (кликнете върху бутон или меню елемент от, завършването на въвеждане на текст в текстовото поле, изберете нова стойност в списъка). Той е предназначен да покаже една задействана процедура, или външно приложение (COM Добави В). Пример: But1.OnAction = "MySub".
  • Параметър - това е възможно да се използва свойството да премине параметри, за да се извиква една подпрограма или просто да съхранявате данните си. Работа с низ тип данни.
  • Снимка - тази функция ви позволява да зададете бутон на снимка (икона) в лентата с инструменти. Най-често тя не е в употреба, както и FaceId собственост (по-горе). Ако е необходимо, необходимите икони могат да се избират от голяма колекция от която е в Visual Studio, или да използват една от иконите свободно достъпни генератори.
  • ShortcutText - текст, описващ комбинация на клавиатурата, възложена на този бутон или меню елемент.
  • Членка - на бутона - нормално, удавяне или обиколи рамка.
  • Стил - друг имот, който се отразява на външния вид. Тя ви позволява да се определи колко бутона ще изглежда така: иконата ще се показва само, само надпис или комбинация от двете заедно по различни начини.
  • Подсказка - определя текста на подсказка. По подразбиране "изскача" Надпис стойността на имота.
  • Тип - връща типа на контрол (използван за промяна на вида не може да бъде!)
  • Видима - дали този контрол се вижда или не.
  • Изтриване () метод - ви позволява да премахнете бутона от колекцията на бутон;
  • Execute () метод - изпълнява това, което се определя от OnAction на собственост;
  • Reset () - се върнете към бутона за оригиналните настройки, след като направите всички промени;

Този механизъм е единственият случай - Click. Той също така ви позволява да се определи отговора на натискане на бутон, но по-трудно да се работи с него, отколкото с OnAction имота.

По принцип работя с ленти с инструменти, която е достатъчно. Въпреки това, в менюто - тече и контекст - е малко по-сложно. В падащото меню, ще се нуждаят от повече инвестиции, за да се определят елементите, както и в контекстното меню - и дори приложи това меню, за всеки обект.

За да работите с вложени меню е точно същата колекция Controls, която вече се използва. Единствената разлика - тя не принадлежи към CommandBar обект за събиране на органи за управление и CommandBarPopup обект - това е, друго меню! В нашия пример прикачения файл ще изглежда така:

"Създаване на стандарт CommandBar обект

Дим CBar1 Както CommandBar

Задайте CBar1 = CommandBars.Add ( "Документи", msoBarTop)

Дим Menu1 Както CommandBarPopup

Дим SubMenu1 Както CommandBarPopup

Дим SubMenu1Item Както CommandBarButton