Před Excelem 2007 používali programátoři VBA objekt CommandBar k vytváření vlastních nabídek, vlastních panelů nástrojů a vlastních místních nabídek (klepnutí pravým tlačítkem). Počínaje aplikací Excel 2007 je objekt CommandBar v poněkud zvláštní pozici. Pokud napíšete kód pro přizpůsobení nabídky nebo panelu nástrojů, Excel tento kód zachytí a ignoruje mnoho vašich příkazů.
Místo zobrazení vašeho promyšleného vylepšení rozhraní Excel 2007 (stejně jako novější verze) jednoduše vypíše vaše přizpůsobené nabídky a panely nástrojů na univerzální kartu pásu s názvem Doplňky.
Přizpůsobení nabídky a panelu nástrojů končí ve skupině Doplňky → Příkazy nabídky nebo Doplňky → Vlastní panely nástrojů. Ale přizpůsobení místních nabídek (které také používá objekt CommandBar) stále funguje jako vždy – no, tak nějak.
Sečteno a podtrženo? Objekt CommandBar již není příliš užitečný, ale zůstává jediným způsobem, jak přizpůsobit místní nabídky.
Přidání nové položky do místní nabídky Buňka
Níže naleznete ukázkový kód, který přidá novou položku do místní nabídky, která se zobrazí po kliknutí pravým tlačítkem na buňku. Tyto příklady byste měli být schopni přizpůsobit svým potřebám.
Nástroj Change Case můžete trochu vylepšit tím, že jej zpřístupníte z místní nabídky buňky.
Procedura AddToShortcut přidá novou položku nabídky do místní nabídky Buňka. Můžete jej přizpůsobit tak, aby ukazoval na vaše vlastní makra, změnou vlastností Caption a OnAction objektu s názvem NewControl.
Sub AddToShortCut()
Dim Bar Jako CommandBar
Ztlumit NewControl jako CommandBarButton
DeleteFromShortcut
Nastavit pruh = Application.CommandBars(“Buňka”)
Set NewControl = Bar.Controls.Add _
(Typ:=msoControlButton, ID:=1, _
dočasné:=pravda)
S NewControl
.Caption = „&Změnit velikost písmen“
.OnAction = “ChangeCase”
.Style = msoButtonIconAndCaption
Konec s
End Sub
Když upravíte místní nabídku, tato úprava zůstane v platnosti, dokud nerestartujete Excel. Jinými slovy, upravené místní nabídky se samy neresetují, když zavřete sešit obsahující kód VBA. Pokud tedy napíšete kód pro úpravu místní nabídky, téměř vždy napíšete kód, který zvrátit účinek vaší úpravy.
Procedura DeleteFromShortcut odstraní novou položku nabídky z místní nabídky buňky:
Sub DeleteFromShortcut()
Při chybě pokračovat dále
Application.CommandBars(“Buňka”).Ovládací prvky _
(„&Změnit případ“). Odstranit
End Sub
To ukazuje, jak se nová položka nabídky zobrazí po kliknutí pravým tlačítkem na buňku.
Místní nabídka Buňka zobrazující vlastní položku nabídky: Změnit velikost písmen.
První skutečný příkaz po deklaraci několika proměnných volá proceduru DeleteFromShortcut. Tento příkaz zajišťuje, že se v místní nabídce Buňka zobrazí pouze jedna položka nabídky Změnit případ. Zkuste tento řádek okomentovat (na začátek řádku vložte apostrof) a několikrát spusťte proceduru – ale nenechte se unést!
Klepněte pravým tlačítkem na buňku a uvidíte několik instancí položky nabídky Změnit velikost písmen. Zbavte se všech položek spuštěním DeleteFromShortcut vícekrát (jednou pro každou další položku nabídky).
Nakonec potřebujete způsob, jak přidat položku místní nabídky při otevření sešitu a odstranit položku nabídky při zavření sešitu. To je snadné. Stačí přidat tyto dvě procedury událostí do modulu kódu ThisWorkbook:
Private Sub Workbook_Open()
Zavolejte AddToShortCut
End Sub
Private Sub Workbook_BeforeClose (Zrušit jako Boolean)
Zavolejte DeleteFromShortcut
End Sub
Procedura Workbook_Open se provede při otevření sešitu a procedura Workbook_BeforeClose se provede před zavřením sešitu. Přesně to, co lékař nařídil.
Co se liší v Excelu 2013 a Excelu 2016?
Pokud jste používali VBA pro práci s místními nabídkami v Excelu 2007 nebo starším, musíte si být vědomi významné změny.
Pokud v minulosti váš kód upravoval místní nabídku, byla tato úprava platná pro všechny sešity. Pokud jste například přidali novou položku do nabídky po klepnutí pravým tlačítkem na buňku, tato nová položka se zobrazí, když klepnete pravým tlačítkem na buňku v libovolném sešitu (a v dalších sešitech, které otevřete později). Jinými slovy, úpravy místní nabídky byly provedeny na úrovni aplikace .
Excel 2013 a Excel 2016 používají jediné rozhraní dokumentu, které ovlivňuje místní nabídky. Změny, které provedete v místní nabídce, ovlivní pouze okno aktivního sešitu. Když spustíte kód, který upravuje místní nabídku, místní nabídka pro jiná okna než aktivní okno se nezmění. Jde o radikální odklon od toho, jak věci fungovaly dříve.
Další změna: Pokud uživatel otevře sešit (nebo vytvoří nový sešit), když aktivní okno zobrazuje upravenou místní nabídku, nový sešit také zobrazí upravenou místní nabídku. Jinými slovy, nová okna zobrazují stejné místní nabídky jako okno, které bylo aktivní při otevření nových oken.
Sečteno a podtrženo: Pokud jste v minulosti otevřeli sešit nebo doplněk, který upravoval místní nabídky, mohli jste si být jisti, že upravené místní nabídky budou dostupné ve všech sešitech. Tu jistotu už nemáte.
Vytvářejte vlastní místní nabídky v Accessu 2007
Okno návrhu maker se v Accessu 2007 liší ve srovnání s novějšími verzemi, takže pokud používáte Access 2007, rozbalte následující části a postupujte podle nich.
Krok 1 pro Access 2007: Vytvořte skupinu maker, která obsahuje příkazy nabídky
V tomto kroku vytvoříte skupinu maker, z nichž každé makro bude samostatným příkazem v místní nabídce.
Co je makroskupina?
Skupina maker je jeden objekt maker, který obsahuje dvě nebo více nezávislých maker. Jednotlivá makra se identifikují zadáním názvu každého makra do sloupce Názvy maker. Na následujícím obrázku je Macro3 skupina maker. NotFoundMsg a FoundMsg jsou jednotlivá makra v rámci skupiny, každé makro se skládá ze dvou akcí makra.
Poznámka: Sloupec Název makra je ve výchozím nastavení skrytý. Chcete-li zobrazit sloupec Název makra , na kartě Návrh ve skupině Zobrazit/skrýt klikněte na Názvy maker .
-
Na kartě Vytvořit ve skupině Jiné klikněte na Makro . Pokud tento příkaz není k dispozici, klikněte na šipku pod tlačítkem Modul nebo Modul třídy a poté klikněte na Makro .
-
Na kartě Návrh ve skupině Zobrazit/skrýt kliknutím na Názvy maker zobrazte sloupec Název makra .
-
Pro každý příkaz, který chcete ve své vlastní místní nabídce:
-
Do sloupce Název makra zadejte text, který chcete zobrazit v místní nabídce (například "Tisk sestavy" nebo "Uložit").
Poznámka: Chcete-li vytvořit přístupovou klávesu, abyste mohli k výběru příkazu použít klávesnici, zadejte ampersand (&) před písmeno, které má být přístupovou klávesou v názvu příkazu (například „&Uložit“). Toto písmeno bude v nabídce podtrženo.
-
Ve sloupci Akce vyberte první akci, kterou chcete provést, když kliknete na příkaz v místní nabídce.
-
Pokud chcete při výběru tohoto příkazu provést více akcí, přidejte je na následující řádky. Pro každou následující akci ponechte buňku Název makra prázdnou.
Poznámka: Chcete-li vytvořit čáru mezi dvěma příkazy nabídky, zadejte do sloupce Název makra mezi příslušnými příkazy nabídky pomlčku (-).
-
Uložte a pojmenujte makro, například mcrShortcutMenuCommands .
Následující obrázek ukazuje příklad skupiny maker pro vlastní nabídku nebo místní nabídku.
Krok 2 pro Access 2007: Vytvořte makro, které vytvoří nabídku
Tento krok se může zdát nadbytečný, ale chcete-li vytvořit místní nabídku ze skupiny maker, kterou jste vytvořili v kroku 1, musíte vytvořit druhé makro, které obsahuje akci makra AddMenu . Toto makro se někdy nazývá „makro nabídky“.
-
Na kartě Vytvořit ve skupině Jiné klikněte na Makro . Pokud tento příkaz není k dispozici, klikněte na šipku pod tlačítkem Modul nebo Modul třídy a poté klikněte na Makro .
-
Na prvním řádku makra vyberte AddMenu v seznamu Action .
-
V části Argumenty akce zadejte do pole Název nabídky název nabídky (například „Příkazy sestavy“). Tento argument není povinný, ale doporučuje se, pokud v kroku 3 plánujete přidat nabídku na kartu pásu karet (jako je karta Doplňky formuláře nebo sestavy). Pokud je nabídka přidána jako místní nabídka v kroku 3, argument Název nabídky je ignorován.
-
Do pole Název makra nabídky zadejte název makra, které jste vytvořili v kroku 1.
-
Uložte a pojmenujte makro, například mcrAddShortcutMenu .
Následující obrázek ukazuje příklad makra nabídky, které vytváří nabídku, kterou jsme navrhli v kroku 1.
Krok 3 pro Access 2007: Připojte nabídku k ovládacímu prvku, formuláři, sestavě nebo databázi
V závislosti na tom, kde se má nabídka zobrazit, použijte jeden nebo více z následujících postupů.
-
Přidejte nabídku na kartu Doplňky formuláře nebo sestavy
Tento postup použijte, pokud chcete, aby se nabídka objevila na kartě Doplňky pro konkrétní formulář nebo sestavu, jak je znázorněno na následujícím obrázku:
-
V navigačním podokně klikněte pravým tlačítkem na formulář nebo sestavu, kde se má nabídka zobrazit, a poté klikněte na Návrhové zobrazení .
-
Na kartě Návrh ve skupině Zobrazit/skrýt klikněte na položku List vlastností .
-
Vyberte celý objekt výběrem formuláře nebo sestavy ze seznamu v horní části podokna úloh List vlastností.
-
Na kartě Jiné na listu vlastností zadejte do pole vlastností místní nabídky název makra, které jste vytvořili v kroku 2 (v tomto příkladu „mcrAddShortcutMenu“).
Při příštím otevření formuláře nebo sestavy se na pásu karet zobrazí karta Doplňky . Klepnutím na kartu zobrazíte nabídku.
Další informace o technikách přizpůsobení pásu karet, jako je přidání vlastních karet nebo skrytí výchozích karet, najdete v článku Vytvoření vlastního pásu karet v Accessu .
Pás karet je součástí uživatelského rozhraní Microsoft Office Fluent.
-
Přidejte nabídku jako místní nabídku pro formulář, sestavu nebo ovládací prvek
Tento postup použijte, pokud chcete, aby se nabídka zobrazila po klepnutí pravým tlačítkem na konkrétní formulář, sestavu nebo ovládací prvek, jak je znázorněno na následujícím obrázku:
-
V navigačním podokně klikněte pravým tlačítkem na formulář nebo sestavu, kde se má zobrazit místní nabídka, a poté klikněte na Návrhové zobrazení .
-
Na kartě Návrh ve skupině Zobrazit/skrýt klikněte na položku List vlastností .
-
Vyberte ovládací prvek nebo objekt, ke kterému chcete připojit místní nabídku.
Poznámka: Chcete-li vybrat celý objekt, vyberte Formulář nebo Sestava ze seznamu v horní části podokna úloh List vlastností.
-
Na kartě Jiné na listu vlastností zadejte do pole vlastností panelu místní nabídky název makra, které jste vytvořili v kroku 2 (v tomto příkladu „mcrAddShortcutMenu“).
-
Přidejte nabídku jako globální místní nabídku
Tento postup nahradí všechny výchozí místní nabídky v aktuální databázi. Vlastní místní nabídky, které jste připojili ke konkrétním formulářům, sestavám nebo ovládacím prvkům, nejsou ovlivněny.
-
Klikněte na tlačítko Microsoft Office a poté na Možnosti přístupu .
-
V dialogovém okně Možnosti aplikace Access klikněte na položku Aktuální databáze .
-
V části Možnosti pásu karet a panelu nástrojů zadejte do pole Panel místní nabídky název makra, které jste vytvořili v kroku 2 (v tomto příkladu „mcrAddShortcutMenu“).
-
Vlastní místní nabídky nahrazují výchozí místní nabídky pro objekty, ke kterým jsou připojeny. Chcete-li zachovat určité příkazy Accessu pro použití v těchto nabídkách, použijte akci SpustitPříkaz k umístění příkazů do skupin maker pro nabídky, ve kterých je chcete mít.
-
Vlastní místní nabídka, která je připojena k ovládacímu prvku, nahrazuje jakékoli jiné vlastní místní nabídky, které jsou definovány v databázi. Vlastní místní nabídka, která je připojena k formuláři nebo sestavě, nahrazuje vlastní globální místní nabídku.
-
Když zadáte makro nabídky pro formulář nebo sestavu nebo pro databázi, Access toto makro nabídky spustí při každém otevření formuláře, sestavy nebo databáze. Pokud provedete změny v makru nabídky nebo skupině maker, která definuje jeho příkazy, zatímco je formulář, sestava nebo databáze otevřená, musíte formulář, sestavu nebo databázi zavřít a znovu je otevřít, abyste viděli změny.
-
Chcete-li vytvořit podnabídku, postupujte podle kroku 1 a vytvořte samostatnou skupinu maker, která obsahuje pouze příkazy podnabídky. Poté znovu podle kroku 1 definujte příkazy pro nabídku vyšší úrovně. Přidejte podnabídku jako položku do skupiny maker vyšší úrovně pomocí akce makra Přidat nabídku . Následující obrázek ukazuje skupinu maker pro nabídku, která obsahuje podnabídku, a poté ukazuje výslednou místní nabídku. Třetí řádek ve skupině maker vytváří podnabídku Exportovat do... ( mcrSubMenu ).
Pomocí akcí AddMenu ve skupinách maker pro každou úroveň nabídky můžete vytvořit více úrovní podnabídek . Nezapomeňte zadat hodnotu argumentu Název nabídky pro každou akci AddMenu , jinak se podnabídka zobrazí jako prázdný řádek v nabídce vyšší úrovně.
-
Podmínky maker jsou podporovány pouze v makru nabídky nejvyšší úrovně. Jinými slovy, můžete použít podmínku v makru nabídky k určení, zda se zobrazí konkrétní nabídka nebo místní nabídka, ale pouze pro nabídky na nejvyšší úrovni. Podmínky nelze použít k zobrazení nebo skrytí příkazů nebo podnabídek v nabídkách. Pomocí podmínky můžete také skrýt nebo zobrazit vlastní místní nabídku nebo globální místní nabídku.
-
Volitelně může být makro nabídky, které vytvoříte v kroku 2, součástí skupiny maker. Máte-li například několik místních nabídek pro různé objekty nebo ovládací prvky, můžete vytvořit jeden objekt makra, který obsahuje všechna potřebná makra nabídky. Nezapomeňte zobrazit sloupec Název makra a zadejte jedinečný název pro každé makro. V kroku 3 použijte k odkazování na makro následující zápis: název_makroskupiny.název_makra . Například mcrAddShortcutMenus.AddMenu2 .