Как да персонализирате бързите менюта на Excel 2016 във VBA

Преди Excel 2007, VBA програмистите използваха обекта CommandBar за създаване на персонализирани менюта, персонализирани ленти с инструменти и персонализирани менюта за бърз достъп (щракване с десния бутон). Започвайки с Excel 2007, обектът CommandBar е в доста странна позиция. Ако пишете код за персонализиране на меню или лента с инструменти, Excel прихваща този код и игнорира много от вашите команди.

Вместо да показва вашето добре обмислено подобрение на интерфейса, Excel 2007 (както по-късните версии) просто изхвърля вашите персонализирани менюта и ленти с инструменти в раздела на лентата за всички, наречени Добавки.

Персонализирането на менюта и лентата с инструменти завършва в Добавки → Команди на менюто или групата Добавки → Персонализирани ленти с инструменти. Но персонализирането на менютата за бърз достъп (което също използва обекта CommandBar) все още работи както винаги - добре, някак си.

В крайна сметка? Обектът CommandBar вече не е много полезен, но остава единственият начин за персонализиране на менютата за бърз достъп.

Добавяне на нов елемент към контекстното меню на клетката

По-долу ще намерите примерен код, който добавя нов елемент към контекстното меню, което се появява, когато щракнете с десния бутон върху клетка. Трябва да можете да адаптирате тези примери към вашите нужди.

Можете да подобрите малко помощната програма Change Case, като я направите достъпна от контекстното меню Cell.

Процедурата AddToShortcut добавя нов елемент от менюто към контекстното меню Cell. Можете да го адаптирате, за да сочи към вашите собствени макроси, като промените свойствата Caption и OnAction на обекта с име NewControl.

Под AddToShortCut()
  Затъмнена лента като командна лента
  Затъмнете NewControl като бутон за командна лента
  DeleteFromShortcut
  Задайте лента = Application.CommandBars(„Cell“)
  Задайте NewControl = Bar.Controls.Add _
     (Тип:=msoControlButton, ID:=1, _
     временен:=Вярно)
  С NewControl
    .Caption = „&Промяна на регистъра“
    .OnAction = „ChangeCase“
    .Стил = msoButtonIconAndCaption
  Край с
Край под

Когато промените пряко меню, тази промяна остава в сила, докато не рестартирате Excel. С други думи, модифицираните менюта за бърз достъп не се нулират, когато затворите работната книга, която съдържа VBA кода. Следователно, ако пишете код, за да промените пряко меню, почти винаги пишете код, за да обърнете ефекта от вашата модификация.

Процедурата DeleteFromShortcut премахва новия елемент от менюто от контекстното меню Cell:

Sub DeleteFromShortcut()
  При грешка Продължете напред
  Application.CommandBars(“Cell”).Контроли _
    (“&Промяна на регистъра”).Изтриване
Край под

Това показва как се показва новият елемент от менюто, след като щракнете с десния бутон върху клетка.

Как да персонализирате бързите менюта на Excel 2016 във VBA

Менюто за пряк път на клетката, показващо персонализиран елемент от менюто: Промяна на регистъра.

Първата действителна команда след декларацията на няколко променливи извиква процедурата DeleteFromShortcut. Това изявление гарантира, че само един елемент от менюто Change Case се появява в контекстното меню Cell. Опитайте да коментирате този ред (поставете апостроф в началото на реда) и да изпълните процедурата няколко пъти — но не се увличайте!

Щракнете с десния бутон върху клетка и можете да видите няколко екземпляра на елемента от менюто Change Case. Отървете се от всички записи, като стартирате DeleteFromShortcut няколко пъти (веднъж за всеки допълнителен елемент от менюто).

И накрая, имате нужда от начин да добавите елемента от менюто за бърз достъп, когато работната книга е отворена, и да изтриете елемента от менюто, когато работната книга е затворена. Правенето на това е лесно. Просто добавете тези две процедури за събития към кодовия модул на ThisWorkbook:

Частна под работна книга_Open()
Обадете се на AddToShortCut
Край под
Частна под работна книга_BeforeClose(Отказ като булева)
Обадете се на DeleteFromShortcut
Край под

Процедурата Workbook_Open се изпълнява при отваряне на работната книга, а процедурата Workbook_BeforeClose се изпълнява преди затварянето на работната книга. Точно това, което лекарят поръча.

Какво е различното в Excel 2013 и Excel 2016?

Ако сте използвали VBA за работа с менюта за бърз достъп в Excel 2007 или по-стара версия, трябва да сте наясно със значителна промяна.

В миналото, ако кодът ви е променил пряко меню, тази модификация е била в сила за всички работни книги. Например, ако сте добавили нов елемент към менюто за щракване с десния бутон върху клетката, този нов елемент ще се появи, когато щракнете с десния бутон върху клетка в която и да е работна книга (плюс други работни книги, които отваряте по-късно). С други думи, промените в менюто за бърз достъп бяха направени на ниво приложение .

Excel 2013 и Excel 2016 използват един интерфейс на документа и това засяга менютата за бърз достъп. Промените, които правите в менютата за бърз достъп, засягат само прозореца на активната работна книга. Когато изпълните кода, който променя контекстното меню, менюто за бърз достъп за прозорци, различни от активния прозорец, няма да се промени. Това е радикално отклонение от начина, по който работиха нещата преди.

Друг обрат: Ако потребителят отвори работна книга (или създаде нова работна книга), когато активният прозорец показва модифицираното меню за бърз достъп, новата работна книга също показва модифицираното меню за бърз достъп. С други думи, новите прозорци показват същите бързи менюта като прозореца, който е бил активен при отваряне на новите прозорци.

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

Създайте персонализирани менюта за бърз достъп в Access 2007

Прозорецът за проектиране на макроси е различен в Access 2007 в сравнение с по-късните версии, така че разширете следните раздели, за да ги следвате, ако използвате Access 2007.

Стъпка 1 за Access 2007: Създайте група макроси, която съдържа командите на менюто

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

Какво е макрогрупа?

Макро група е единичен макро обект, който съдържа два или повече независими макроса. Отделните макроси се идентифицират чрез въвеждане на име за всеки макрос в колоната Имена на макроси. В следващата илюстрация  Macro3  е група макроси. NotFoundMsg  и  FoundMsg  са отделни макроси в групата, като всеки макрос се състои от две макро действия.

Пример за група макроси

Забележка:  Колоната  Име на макрос  е скрита по подразбиране. За да покажете  колоната Име на макрос  , в  раздела Проектиране  , в  групата Показване/скриване  щракнете върху  Имена на макроси .

  1. В  раздела Създаване  , в  групата Други  щракнете върху  Макрос . Ако тази команда не е налична, щракнете върху стрелката под  бутона „ Модул“  или  „Модул на клас“  и след това щракнете върху  „Макро“ .

  2. В  раздела Проектиране  , в   групата  Показване/скриване щракнете върху Имена на макроси  , за да се покаже  колоната Име на макроси  .

  3. За всяка команда, която искате в персонализираното меню за бърз достъп:

    • В  колоната Име на макрос  въведете текста, който искате да се показва в менюто за бърз достъп (например „Отпечатване на отчет“ или „Запазване“).

      Забележка:  За да създадете ключ за достъп, така че да можете да използвате клавиатурата, за да изберете командата, въведете амперсанд (&) преди буквата, която искате да бъде клавиш за достъп в името на командата (например „&Запазване“). Тази буква ще бъде подчертана в менюто.
    • В  колоната Действие  изберете първото действие, което искате да изпълните, когато щракнете върху командата в менюто за бърз достъп.

    • Ако има още действия, които искате да изпълните, когато изберете тази команда, добавете ги на следващите редове. За всяко следващо действие оставете  клетката за име на макрос  празна.

      Забележка:  За да създадете линия между две команди на менюто, въведете тире (-) в  колоната Име на макрос  между съответните команди на менюто.
  4. Запазете и наименувайте макроса, например   mcrShortcutMenuCommands .

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

Група макроси на меню в изглед за проектиране

Стъпка 2 за Access 2007: Създайте макрос, който създава менюто

Тази стъпка може да изглежда излишна, но за да създадете менюто за бърз достъп от групата макроси, която сте създали в Стъпка 1, трябва да създадете втори макрос, който съдържа  макро действието AddMenu  . Този макрос понякога се нарича "макрос на менюто".

  1. В  раздела Създаване  , в  групата Други  щракнете върху  Макрос . Ако тази команда не е налична, щракнете върху стрелката под  бутона „ Модул“  или  „Модул на клас“  и след това щракнете върху  „Макро“ .

  2. На първия ред на макроса изберете  AddMenu  в  списъка с действия  .

  3. Под  Аргументи на действие в  полето Име на менюто  въведете името на менюто (например „Команди за отчет“). Този аргумент не е задължителен, но се препоръчва, ако в стъпка 3 планирате да добавите менюто към раздел на лента (като раздела  Добавки  на формуляр или отчет). Ако менюто е добавено като меню за бърз достъп в Стъпка 3,  аргументът Име на менюто  се игнорира.

  4. В  полето Име на макрос в менюто  въведете името на макроса, който сте създали в Стъпка 1.

  5. Запишете и наименувайте макроса, например  mcrAddShortcutMenu .

Следващата илюстрация показва примерен макрос на меню, който създава менюто, което проектирахме в Стъпка 1.

Макрос на меню в изглед за проектиране

Стъпка 3 за Access 2007: Прикрепете менюто към контрола, формуляр, отчет или база данни

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

  • Добавете менюто към раздела Добавки на формуляр или отчет

    Използвайте тази процедура, ако искате менюто да се показва в  раздела Добавки  за конкретен формуляр или отчет, както е показано на следната илюстрация:

    Раздел „Добавки“, съдържащ персонализирано меню

    1. В навигационния екран щракнете с десния бутон върху формуляра или отчета, където искате да се появи менюто, и след това щракнете върху  Изглед за проектиране .

    2. В  раздела Проектиране  , в   групата  Показване/скриване щракнете върху Лист със свойства .

    3. Изберете целия обект, като изберете  Формуляр  или  Отчет  от списъка в горната част на прозореца на задачите Лист със свойства.

    4. В  раздела Други  на листа със свойства, в  полето за свойства на менюто за бърз достъп  , въведете името на макроса, който сте създали в стъпка 2 (в този пример „mcrAddShortcutMenu“).

      Следващия път, когато отворите формуляра или отчета,  разделът Добавки  се появява в лентата. Щракнете върху раздела, за да видите менюто.

      За повече информация относно техниките за персонализиране на лентата, като добавяне на потребителски раздели или скриване на разделите по подразбиране, вижте статията  Създаване на персонализирана лента в Access .

      Лентата е компонент на потребителския интерфейс на Microsoft Office Fluent.

  • Добавете менюто като меню за бърз достъп за формуляр, отчет или контрола

    Използвайте тази процедура, ако искате менюто да се показва, когато щракнете с десния бутон върху конкретен формуляр, отчет или контрола, както е показано на следната илюстрация:

    Просто меню за бърз достъп

    1. В навигационния екран щракнете с десния бутон върху формуляра или отчета, където искате да се появи менюто за бърз достъп, и след това щракнете върху  Изглед за проектиране .

    2. В  раздела Проектиране  , в   групата  Показване/скриване щракнете върху Лист със свойства .

    3. Изберете контролата или обекта, към който искате да прикачите менюто за бърз достъп.

      Забележка:  За да изберете целия обект, изберете  Формуляр  или  Отчет  от списъка в горната част на прозореца на задачите Лист със свойства.

    4. В  раздела Други  на листа със свойства, в  полето за свойства на лентата с менюта за бърз достъп  , въведете името на макроса, който сте създали в Стъпка 2 (в този пример „mcrAddShortcutMenu“).

  • Добавете менюто като глобално контекстно меню

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

    1. Щракнете върху  бутона Microsoft Office  и след това върху  Опции на Access .

    2. В   диалоговия прозорец  Опции на Access щракнете върху Текуща база данни .

    3. Под  Опции на лентата и лентата с инструменти , в  полето Лента с менюта за бърз достъп  , въведете името на макроса, който сте създали в Стъпка 2 (в този пример „mcrAddShortcutMenu“).

  • Персонализираните менюта за бърз достъп заместват менютата за бърз достъп по подразбиране за обектите, към които са прикачени. Ако искате да запазите определени команди на Access, които да използвате в тези менюта, използвайте  действието RunCommand  , за да поставите командите в групите макроси за менютата, в които ги искате.

  • Персонализирано меню за бърз достъп, което е прикрепено към контрола, замества всички други персонализирани менюта за бърз достъп, които са дефинирани в базата данни. Персонализирано меню за бърз достъп, което е прикачено към формуляр или отчет, замества потребителско глобално меню за бърз достъп.

  • Когато посочите макрос на менюто за формуляр, отчет или за базата данни, Access изпълнява този макрос на менюто винаги, когато формулярът, отчетът или базата данни се отварят. Ако направите промени в макроса на менюто или групата макроси, която дефинира неговите команди, докато формулярът, отчетът или базата данни са отворени, трябва да затворите формуляра, отчета или базата данни и да ги отворите отново, за да видите промените.

  • За да създадете подменю, следвайте стъпка 1, за да създадете отделна група макроси, която съдържа само командите на подменюто. След това следвайте стъпка 1 отново, за да дефинирате командите за менюто от по-високо ниво. Добавете подменюто като елемент в групата макроси от по-високо ниво, като използвате   действието макрос AddMenu . Следната илюстрация показва групата макроси за меню, което съдържа подменю, и след това показва полученото меню за бърз достъп. Третият ред в групата макроси създава  подменюто Експортиране в...  ( mcrSubMenu ).

    Меню за бърз достъп, което съдържа подменю

    Можете да създадете множество нива на подменюта, като използвате  действия AddMenu  в групите макроси за всяко ниво на менюто. Уверете се, че сте предоставили стойност за  аргумента Име на менюто  за всяко  действие AddMenu  , в противен случай подменюто ще се появи като празен ред в менюто от по-високо ниво.

  • Условията на макроси се поддържат само в макроса на менюто от най-високо ниво. С други думи, можете да използвате условие в макрос на менюто, за да определите дали конкретно меню или меню за бърз достъп ще бъде показано, но само за менютата от най-високо ниво. Не можете да използвате условия за показване или скриване на команди или подменюта в менютата. Можете също да използвате условие, за да скриете или покажете персонализирано меню за бърз достъп или глобално меню за бърз достъп.

  • По желание макросът на менюто, който създавате в Стъпка 2, може да бъде част от група макроси. Например, ако имате няколко менюта за бърз достъп за различни обекти или контроли, можете да създадете един макро обект, който съдържа всички необходими макроси на менюто. Уверете се, че показвате  колоната Име на макрос  и въведете уникално име за всеки макрос. В Стъпка 3 използвайте следната нотация, за да се обърнете към макроса:  macrogroupname.macroname . Например,  mcrAddShortcutMenus.AddMenu2 .


Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирам Microsoft Word да отваря файлове в режим само за четене в Windows Microsoft Word отваря файлове в режим само за четене, което прави невъзможно редактирането им? Не се притеснявайте, методите са по-долу

Как да коригирате неправилно отпечатване на документи на Microsoft Word

Как да коригирате неправилно отпечатване на документи на Microsoft Word

Как да коригирате грешки при отпечатването на неправилни документи на Microsoft Word Грешките при отпечатването на документи на Word с променени шрифтове, разхвърляни абзаци, липсващ текст или изгубено съдържание са доста чести. Въпреки това недейте

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Ако сте използвали писалката или маркера, за да рисувате върху слайдовете на PowerPoint по време на презентация, можете да запазите чертежите за следващата презентация или да ги изтриете, така че следващия път, когато го покажете, да започнете с чисти слайдове на PowerPoint. Следвайте тези инструкции, за да изтриете чертежи с писалка и маркери: Изтриване на линии една в […]

Съдържание на библиотеката за стилове в SharePoint 2010

Съдържание на библиотеката за стилове в SharePoint 2010

Библиотеката със стилове съдържа CSS файлове, файлове с разширяем език на стиловия език (XSL) и изображения, използвани от предварително дефинирани главни страници, оформления на страници и контроли в SharePoint 2010. За да намерите CSS файлове в библиотеката със стилове на сайт за публикуване: Изберете Действия на сайта→Преглед Цялото съдържание на сайта. Появява се съдържанието на сайта. Библиотеката Style се намира в […]

Форматирайте числата в хиляди и милиони в отчети на Excel

Форматирайте числата в хиляди и милиони в отчети на Excel

Не затрупвайте аудиторията си с огромни числа. В Microsoft Excel можете да подобрите четливостта на вашите табла за управление и отчети, като форматирате числата си така, че да се показват в хиляди или милиони.

Как да споделяте и следвате сайтове на SharePoint

Как да споделяте и следвате сайтове на SharePoint

Научете как да използвате инструменти за социални мрежи на SharePoint, които позволяват на индивиди и групи да общуват, да си сътрудничат, споделят и да се свързват.

Как да конвертирате дати в юлиански формати в Excel

Как да конвертирате дати в юлиански формати в Excel

Юлианските дати често се използват в производствени среди като времеви печат и бърза справка за партиден номер. Този тип кодиране на дата позволява на търговците на дребно, потребителите и обслужващите агенти да идентифицират кога е произведен продуктът и по този начин възрастта на продукта. Юлианските дати се използват и в програмирането, военните и астрономията. Различно […]

Как да създадете уеб приложение на Access

Как да създадете уеб приложение на Access

Можете да създадете уеб приложение в Access 2016. И така, какво всъщност е уеб приложение? Е, уеб означава, че е онлайн, а приложението е просто съкращение от „приложение“. Персонализирано уеб приложение е онлайн приложение за база данни, достъпно от облака с помощта на браузър. Вие създавате и поддържате уеб приложението в настолната версия […]

Лента за бързо стартиране в SharePoint 2010

Лента за бързо стартиране в SharePoint 2010

Повечето страници в SharePoint 2010 показват списък с връзки за навигация в лентата за бързо стартиране в лявата част на страницата. Лентата за бързо стартиране показва връзки към представено съдържание на сайта, като списъци, библиотеки, сайтове и страници за публикуване. Лентата за бързо стартиране включва две много важни връзки: Връзка към цялото съдържание на сайта: […]

Какво означават съобщенията за грешка на Solver в Excel?

Какво означават съобщенията за грешка на Solver в Excel?

За прости проблеми Solver в Excel обикновено бързо намира оптималните стойности на променливата Solver за целевата функция. Но в някои случаи Solver има проблеми с намирането на стойностите на променливата Solver, които оптимизират целевата функция. В тези случаи Solver обикновено показва съобщение или съобщение за грешка, което описва или обсъжда проблема, който […]