Pred Excelom 2007 používali programátori VBA objekt CommandBar na vytváranie vlastných ponúk, vlastných panelov s nástrojmi a vlastných kontextových ponúk (kliknutím pravým tlačidlom myši). Počnúc Excelom 2007 je objekt CommandBar v dosť zvláštnej pozícii. Ak napíšete kód na prispôsobenie ponuky alebo panela s nástrojmi, Excel zachytí tento kód a ignoruje mnohé z vašich príkazov.
Namiesto zobrazenia premysleného vylepšenia rozhrania Excel 2007 (podobne ako novšie verzie) jednoducho zobrazí vaše prispôsobené ponuky a panely s nástrojmi na univerzálnu kartu s páskou s názvom Doplnky.
Prispôsobenia ponuky a panela s nástrojmi skončia v skupine Doplnky → Príkazy ponuky alebo Doplnky → Vlastné panely s nástrojmi. Ale prispôsobenie kontextových ponúk (ktoré tiež používa objekt CommandBar) stále funguje tak, ako to vždy fungovalo – no, tak nejako.
Spodná čiara? Objekt CommandBar už nie je veľmi užitočný, ale zostáva jediným spôsobom, ako prispôsobiť kontextové ponuky.
Pridanie novej položky do ponuky skratiek bunky
Nižšie nájdete vzorový kód, ktorý pridá novú položku do kontextovej ponuky, ktorá sa zobrazí po kliknutí pravým tlačidlom myši na bunku. Mali by ste byť schopní prispôsobiť tieto príklady vašim potrebám.
Pomôcku Change Case môžete trochu vylepšiť tak, že ju sprístupníte z ponuky skratiek bunky.
Procedúra AddToShortcut pridá novú položku ponuky do ponuky skratky bunky. Môžete ho prispôsobiť tak, aby ukazoval na vaše vlastné makrá, zmenou vlastností Caption a OnAction objektu s názvom NewControl.
Sub AddToShortCut()
Dim Bar Ako CommandBar
Stlmiť NewControl ako tlačidlo CommandBarButton
DeleteFromShortcut
Nastaviť pruh = Application.CommandBars(“Cell”)
Set NewControl = Bar.Controls.Add _
(Typ:=msoControlButton, ID:=1, _
dočasný:=Pravda)
S NewControl
.Caption = „&Zmeniť veľkosť písmen“
.OnAction = “ChangeCase”
.Style = msoButtonIconAndCaption
Koniec s
End Sub
Keď upravíte ponuku skratiek, táto úprava zostane v platnosti, kým nereštartujete Excel. Inými slovami, upravené kontextové ponuky sa samé neresetujú, keď zatvoríte zošit, ktorý obsahuje kód VBA. Preto, ak napíšete kód na úpravu ponuky skratiek, takmer vždy napíšete kód, ktorý zvráti účinok vašej úpravy.
Procedúra DeleteFromShortcut odstráni novú položku ponuky z ponuky skratky bunky:
Sub DeleteFromShortcut()
Pri chybe Pokračujte ďalej
Application.CommandBars(“Cell”).Ovládacie prvky _
(„&Zmeniť prípad“). Odstrániť
End Sub
Toto ukazuje, ako sa nová položka ponuky zobrazí po kliknutí pravým tlačidlom myši na bunku.
Ponuka skratky bunky zobrazujúca vlastnú položku ponuky: Zmeniť veľkosť písmen.
Prvý skutočný príkaz po deklarácii niekoľkých premenných volá procedúru DeleteFromShortcut. Toto vyhlásenie zaisťuje, že sa v ponuke skratiek Bunka zobrazí iba jedna položka ponuky Change Case. Skúste tento riadok zakomentovať (na začiatok riadku vložte apostrof) a niekoľkokrát spustite postup – ale nenechajte sa uniesť!
Kliknite pravým tlačidlom myši na bunku a uvidíte viacero výskytov položky ponuky Zmeniť veľkosť písmen. Zbavte sa všetkých položiek spustením DeleteFromShortcut viackrát (raz pre každú ďalšiu položku ponuky).
Nakoniec potrebujete spôsob, ako pridať položku ponuky skratiek pri otvorení zošita a odstrániť položku ponuky pri zatvorení zošita. Je to jednoduché. Stačí pridať tieto dve procedúry udalostí do modulu kódu ThisWorkbook:
Private Sub Workbook_Open()
Zavolajte AddToShortCut
End Sub
Súkromný podriadený zošit_pred zatvorením (zrušiť ako boolovský)
Zavolajte DeleteFromShortcut
End Sub
Procedúra Workbook_Open sa spustí pri otvorení zošita a procedúra Workbook_BeforeClose sa spustí pred zatvorením zošita. Presne to, čo lekár nariadil.
Čo sa líši v Exceli 2013 a Exceli 2016?
Ak ste používali VBA na prácu s ponukami skratiek v Exceli 2007 alebo staršom, musíte si uvedomiť významnú zmenu.
Ak v minulosti váš kód upravil ponuku skratiek, táto úprava bola účinná pre všetky zošity. Ak ste napríklad pridali novú položku do ponuky po kliknutí pravým tlačidlom myši na bunku, táto nová položka sa zobrazí po kliknutí pravým tlačidlom myši na bunku v ľubovoľnom zošite (a v ďalších zošitoch, ktoré otvoríte neskôr). Inými slovami, na aplikačnej úrovni boli vykonané zmeny v ponuke skratiek .
Excel 2013 a Excel 2016 používajú jediné rozhranie dokumentu, ktoré ovplyvňuje kontextové ponuky. Zmeny, ktoré vykonáte v ponukách skratiek, ovplyvnia iba aktívne okno zošita. Keď spustíte kód, ktorý upraví ponuku skratiek, ponuka skratiek pre iné okná ako aktívne okno sa nezmení. Toto je radikálny odklon od toho, ako veci fungovali.
Ďalší zvrat: Ak používateľ otvorí zošit (alebo vytvorí nový zošit), keď sa v aktívnom okne zobrazí upravená ponuka skratiek, nový zošit zobrazí aj upravenú ponuku skratiek. Inými slovami, nové okná zobrazujú rovnaké kontextové ponuky ako okno, ktoré bolo aktívne pri otvorení nových okien.
Zrátané a podčiarknuté: Ak ste v minulosti otvorili zošit alebo doplnok, ktorý upravoval ponuky skratiek, mohli ste si byť istí, že upravené ponuky skratiek budú dostupné vo všetkých zošitoch. Túto istotu už nemáte.
Vytvorte si vlastné kontextové ponuky v Accesse 2007
Okno návrhu makra sa v Accesse 2007 líši v porovnaní s novšími verziami, takže ak používate Access 2007, rozbaľte nasledujúce sekcie a postupujte podľa nich.
Krok 1 pre Access 2007: Vytvorte skupinu makier, ktorá obsahuje príkazy ponuky
V tomto kroku vytvoríte skupinu makier, z ktorých každé makro bude samostatným príkazom v ponuke skratiek.
Čo je makroskupina?
Skupina makier je jeden objekt makier, ktorý obsahuje dve alebo viac nezávislých makier. Jednotlivé makrá sa identifikujú zadaním názvu každého makra do stĺpca Názvy makier. Na nasledujúcom obrázku je makro3 skupina makier. NotFoundMsg a FoundMsg sú samostatné makrá v rámci skupiny, pričom každé makro pozostáva z dvoch akcií makra.
Poznámka: Stĺpec Názov makra je predvolene skrytý. Ak chcete zobraziť stĺpec Názov makra , na karte Návrh v skupine Zobraziť/skryť kliknite na položku Názvy makier .
-
Na karte Vytvoriť v skupine Iné kliknite na položku Makro . Ak tento príkaz nie je k dispozícii, kliknite na šípku pod tlačidlom Modul alebo Modul triedy a potom kliknite na položku Makro .
-
Na karte Návrh v skupine Zobraziť/skryť kliknutím na položku Názvy makier zobrazíte stĺpec Názov makra .
-
Pre každý príkaz, ktorý chcete mať vo svojej vlastnej ponuke skratiek:
-
Do stĺpca Názov makra zadajte text, ktorý chcete zobraziť v ponuke skratiek (napríklad „Vytlačiť zostavu“ alebo „Uložiť“).
Poznámka: Ak chcete vytvoriť prístupový kľúč, aby ste mohli použiť klávesnicu na výber príkazu, zadajte ampersand (&) pred písmeno, ktoré má byť prístupovým kľúčom v názve príkazu (napríklad „&Uložiť“). Toto písmeno bude v ponuke podčiarknuté.
-
V stĺpci Akcia vyberte prvú akciu, ktorú chcete vykonať po kliknutí na príkaz v kontextovej ponuke.
-
Ak existuje viac akcií, ktoré chcete vykonať, keď vyberiete tento príkaz, pridajte ich do nasledujúcich riadkov. Pre každú nasledujúcu akciu ponechajte bunku Názov makra prázdnu.
Poznámka: Ak chcete vytvoriť čiaru medzi dvoma príkazmi ponuky, napíšte spojovník (-) do stĺpca Názov makra medzi príslušnými príkazmi ponuky.
-
Uložte a pomenujte makro, napríklad mcrShortcutMenuCommands .
Nasledujúci obrázok zobrazuje príklad skupiny makier pre vlastnú ponuku alebo ponuku skratiek.
Krok 2 pre Access 2007: Vytvorte makro, ktoré vytvorí ponuku
Tento krok sa môže zdať nadbytočný, ale ak chcete vytvoriť ponuku skratiek zo skupiny makier, ktorú ste vytvorili v kroku 1, musíte vytvoriť druhé makro, ktoré obsahuje akciu makra AddMenu . Toto makro sa niekedy nazýva „makro ponuky“.
-
Na karte Vytvoriť v skupine Iné kliknite na položku Makro . Ak tento príkaz nie je k dispozícii, kliknite na šípku pod tlačidlom Modul alebo Modul triedy a potom kliknite na položku Makro .
-
V prvom riadku makra vyberte AddMenu v zozname Action .
-
V časti Argumenty akcie zadajte do poľa Názov ponuky názov ponuky (napríklad „Príkazy zostavy“). Tento argument sa nevyžaduje, ale odporúča sa, ak v kroku 3 plánujete pridať ponuku na kartu Pás s nástrojmi (napríklad kartu Doplnky formulára alebo zostavy). Ak sa ponuka pridá ako skratka v kroku 3, argument Názov ponuky sa ignoruje.
-
Do poľa Názov makra ponuky zadajte názov makra, ktoré ste vytvorili v kroku 1.
-
Uložte a pomenujte makro, napríklad mcrAddShortcutMenu .
Nasledujúca ilustrácia zobrazuje príklad makra ponuky, ktoré vytvára ponuku, ktorú sme navrhli v kroku 1.
Krok 3 pre Access 2007: Pripojte ponuku k ovládaciemu prvku, formuláru, zostave alebo databáze
V závislosti od toho, kde sa má ponuka zobraziť, použite jeden alebo viacero z nasledujúcich postupov.
-
Pridajte ponuku na kartu Doplnky formulára alebo zostavy
Tento postup použite, ak chcete, aby sa ponuka zobrazila na karte Doplnky pre konkrétny formulár alebo zostavu, ako je znázornené na nasledujúcom obrázku:
-
Na navigačnej table kliknite pravým tlačidlom myši na formulár alebo zostavu, kde sa má zobraziť ponuka, a potom kliknite na položku Návrhové zobrazenie .
-
Na karte Návrh v skupine Zobraziť/skryť kliknite na položku Hárok vlastností .
-
Vyberte celý objekt výberom položky Formulár alebo Správa zo zoznamu v hornej časti pracovnej tably Hárok vlastností.
-
Na karte Iné na hárku vlastností zadajte do poľa vlastností ponuky skratiek názov makra, ktoré ste vytvorili v kroku 2 (v tomto príklade „mcrAddShortcutMenu“).
Pri ďalšom otvorení formulára alebo zostavy sa na páse s nástrojmi zobrazí karta Doplnky . Kliknutím na kartu zobrazíte ponuku.
Ďalšie informácie o technikách prispôsobenia pása s nástrojmi, ako je pridávanie vlastných kariet alebo skrytie predvolených kariet, nájdete v článku Vytvorenie vlastného pásu s nástrojmi v Accesse .
Pás s nástrojmi je súčasťou používateľského rozhrania Microsoft Office Fluent.
-
Pridajte ponuku ako ponuku skratiek pre formulár, zostavu alebo ovládací prvok
Tento postup použite, ak chcete, aby sa ponuka zobrazila po kliknutí pravým tlačidlom myši na konkrétny formulár, zostavu alebo ovládací prvok, ako je znázornené na nasledujúcom obrázku:
-
Na navigačnej table kliknite pravým tlačidlom myši na formulár alebo zostavu, kde sa má zobraziť kontextová ponuka, a potom kliknite na položku Návrhové zobrazenie .
-
Na karte Návrh v skupine Zobraziť/skryť kliknite na položku Hárok vlastností .
-
Vyberte ovládací prvok alebo objekt, ku ktorému chcete pripojiť ponuku skratiek.
Poznámka: Ak chcete vybrať celý objekt, vyberte Formulár alebo Správa zo zoznamu v hornej časti pracovnej tably Hárok vlastností.
-
Na karte Iné na hárku vlastností zadajte do poľa vlastností Panela s odkazmi názov makra, ktoré ste vytvorili v kroku 2 (v tomto príklade „mcrAddShortcutMenu“).
-
Pridajte ponuku ako globálnu ponuku skratiek
Tento postup nahradí všetky predvolené ponuky skratiek v aktuálnej databáze. Vlastné kontextové ponuky, ktoré ste pripojili ku konkrétnym formulárom, zostavám alebo ovládacím prvkom, nie sú ovplyvnené.
-
Kliknite na tlačidlo Microsoft Office a potom kliknite na položku Možnosti prístupu .
-
V dialógovom okne Možnosti programu Access kliknite na položku Aktuálna databáza .
-
V časti Možnosti pásu a panela s nástrojmi zadajte do poľa Panel s odkazmi názov makra, ktoré ste vytvorili v kroku 2 (v tomto príklade „mcrAddShortcutMenu“).
-
Vlastné ponuky skratiek nahrádzajú predvolené ponuky skratiek pre objekty, ku ktorým sú pripojené. Ak chcete zachovať určité príkazy programu Access na použitie v týchto ponukách, použite akciu Spustiť príkaz na vloženie príkazov do skupín makier pre ponuky, v ktorých ich chcete mať.
-
Vlastná kontextová ponuka, ktorá je pripojená k ovládaciemu prvku, nahrádza všetky ostatné vlastné kontextové ponuky, ktoré sú definované v databáze. Vlastná kontextová ponuka, ktorá je pripojená k formuláru alebo zostave, nahrádza vlastnú globálnu kontextovú ponuku.
-
Keď zadáte makro ponuky pre formulár alebo zostavu alebo pre databázu, Access spustí toto makro ponuky vždy, keď sa otvorí formulár, zostava alebo databáza. Ak vykonáte zmeny v makre ponuky alebo skupine makier, ktorá definuje jeho príkazy, keď je formulár, zostava alebo databáza otvorený, musíte formulár, zostavu alebo databázu zavrieť a znova ich otvoriť, aby ste videli zmeny.
-
Ak chcete vytvoriť podponuku, podľa kroku 1 vytvorte samostatnú skupinu makier, ktorá obsahuje iba príkazy podponuky. Potom znova postupujte podľa kroku 1 a definujte príkazy pre ponuku vyššej úrovne. Pridajte podponuku ako položku do skupiny makier vyššej úrovne pomocou akcie makra AddMenu . Nasledujúci obrázok zobrazuje skupinu makier pre ponuku, ktorá obsahuje podponuku, a potom zobrazuje výslednú ponuku skratiek. Tretí riadok v skupine makier vytvára podponuku Exportovať do... ( mcrSubMenu ).
Pomocou akcií AddMenu v skupinách makier pre každú úroveň ponuky môžete vytvoriť viacero úrovní podponuky . Nezabudnite zadať hodnotu pre argument Názov ponuky pre každú akciu AddMenu , inak sa podponuka zobrazí ako prázdny riadok v ponuke vyššej úrovne.
-
Podmienky makra sú podporované iba v makre ponuky najvyššej úrovne. Inými slovami, môžete použiť podmienku v makre ponuky na určenie toho, či sa zobrazí konkrétna ponuka alebo kontextová ponuka, ale iba pre ponuky na najvyššej úrovni. Podmienky nemôžete použiť na zobrazenie alebo skrytie príkazov alebo podmenu v ponukách. Môžete tiež použiť podmienku na skrytie alebo zobrazenie vlastnej ponuky skratiek alebo globálnej ponuky skratiek.
-
Makro ponuky, ktoré vytvoríte v kroku 2, môže byť voliteľne súčasťou skupiny makier. Napríklad, ak máte niekoľko ponúk skratiek pre rôzne objekty alebo ovládacie prvky, môžete vytvoriť jeden objekt makra, ktorý obsahuje všetky potrebné makrá ponuky. Nezabudnite zobraziť stĺpec Názov makra a zadajte jedinečný názov pre každé makro. V kroku 3 použite na označenie makra nasledujúci zápis: názov_skupiny makra.názov_makra . Napríklad mcrAddShortcutMenus.AddMenu2 .