Az Excel 2007 előtt a VBA-programozók a CommandBar objektumot használták egyéni menük, egyéni eszköztárak és egyéni helyi menük (jobb gombbal történő kattintás) létrehozására. Az Excel 2007-től kezdődően a CommandBar objektum meglehetősen furcsa helyzetben van. Ha kódot ír egy menü vagy eszköztár testreszabásához, az Excel elfogja ezt a kódot, és figyelmen kívül hagyja a parancsokat.
Ahelyett, hogy megjelenítené a jól átgondolt kezelőfelület-bővítést, az Excel 2007 (a későbbi verziókhoz hasonlóan) egyszerűen beírja a testreszabott menüket és eszköztárakat a Bővítmények nevű szalaglapra.
A menü- és eszköztár testreszabása a Bővítmények → Menüparancsok vagy a Bővítmények → Egyéni eszköztárak csoportba kerül. De a helyi menük testreszabása (amely szintén a CommandBar objektumot használja) továbbra is úgy működik, mint mindig – nos, valahogy.
A lényeg? A CommandBar objektum már nem túl hasznos, de továbbra is ez az egyetlen módja a helyi menük testreszabásának.
Új elem hozzáadása a Cella helyi menühöz
Az alábbiakban egy mintakódot talál, amely új elemet ad a helyi menühöz, amely akkor jelenik meg, amikor jobb gombbal kattint egy cellára. Ezeket a példákat az Ön igényeihez kell igazítania.
A Change Case segédprogramot egy kicsit javíthatja, ha elérhetővé teszi a Cell helyi menüből.
Az AddToShortcut eljárás egy új menüpontot ad a Cell helyi menühöz. A NewControl nevű objektum Caption és OnAction tulajdonságainak módosításával adaptálhatja úgy, hogy a saját makróira mutasson.
Sub AddToShortCut()
Dim Bar CommandBarként
Dim NewControl As CommandBarButton
DeleteFromShortcut
Set Bar = Application.CommandBars ("Cell")
Set NewControl = Bar.Controls.Add _
(Típus:=msoControlButton, ID:=1, _
ideiglenes:=Igaz)
NewControl-lal
.Caption = "&Kis- és nagybetűk módosítása"
.OnAction = "ChangeCase"
.Style = msoButtonIconAndCaption
Vége ezzel
Vége Sub
Amikor módosít egy helyi menüt, a módosítás az Excel újraindításáig érvényben marad. Más szóval, a módosított helyi menük nem állítják vissza magukat a VBA-kódot tartalmazó munkafüzet bezárásakor. Ezért ha kódot ír egy helyi menü módosításához, akkor szinte mindig kódot ír a módosítás hatásának megfordítására.
A DeleteFromShortcut eljárás eltávolítja az új menüpontot a Cell helyi menüből:
Sub DeleteFromShortcut()
Hiba esetén Folytatás a következőre
Application.CommandBars(“Cell”).Controls _
(„&Kis- és nagybetűk módosítása”).Törlés
Vége Sub
Ez azt mutatja, hogyan jelenik meg az új menüelem, miután jobb gombbal kattintott egy cellára.
A Cell helyi menü, amely egy egyéni menüelemet mutat: Kis- és nagybetű módosítása.
Az első tényleges parancs néhány változó deklarálása után a DeleteFromShortcut eljárást hívja meg. Ez az utasítás biztosítja, hogy csak egy Change Case menüpont jelenjen meg a Cella helyi menüben. Próbáld meg kommentálni ezt a sort (tegyél aposztrófot a sor elejére), és futtasd le néhányszor az eljárást – de ne ragadj el!
Kattintson a jobb gombbal egy cellára, és a Kis- és nagybetűk módosítása menüpont több példányát is megtekintheti. Megszabadulhat az összes bejegyzéstől a DeleteFromShortcut többszöri futtatásával (egyszer minden extra menüelemhez).
Végül a munkafüzet megnyitásakor a helyi menüelem hozzáadására, a munkafüzet bezárásakor pedig törlésére van szükség. Ezt könnyű megtenni. Csak adja hozzá ezt a két eseményeljárást a ThisWorkbook kódmodulhoz:
Privát almunkafüzet_Open()
Hívja az AddToShortCut
Vége Sub
Privát almunkafüzet_BeforeClose (Mégse logikai értékként)
Hívja a DeleteFromShortcut parancsot
Vége Sub
A Workbook_Open eljárás a munkafüzet megnyitásakor, a Workbook_BeforeClose eljárás pedig a munkafüzet bezárása előtt kerül végrehajtásra. Pont amit az orvos rendelt.
Miben különbözik az Excel 2013 és az Excel 2016?
Ha VBA-t használt az Excel 2007-es vagy korábbi verzióiban a helyi menük használatához, akkor tisztában kell lennie egy jelentős változással.
Korábban, ha a kód módosított egy helyi menüt, ez a módosítás minden munkafüzetre érvényes volt. Például, ha új elemet vett fel a Cella jobb gombbal történő kattintási menüjébe, akkor az új elem akkor jelenik meg, amikor a jobb gombbal rákattint egy cellára bármely munkafüzetben (pl. a későbbiekben megnyitott többi munkafüzetben). Más szóval, a helyi menü módosításai az alkalmazás szintjén történtek .
Az Excel 2013 és az Excel 2016 egyetlen dokumentumfelületet használ, és ez hatással van a helyi menükre. A helyi menükben végrehajtott módosítások csak az aktív munkafüzet ablakát érintik. Amikor végrehajtja a helyi menüt módosító kódot, az aktív ablaktól eltérő ablakok helyi menüje nem változik. Ez gyökeresen eltér attól, ahogyan a dolgok korábban működtek.
Egy másik csavar: Ha a felhasználó megnyit egy munkafüzetet (vagy új munkafüzetet hoz létre), amikor az aktív ablakban megjelenik a módosított helyi menü, akkor az új munkafüzet is megjeleníti a módosított helyi menüt. Más szóval, az új ablakok ugyanazokat a helyi menüket jelenítik meg, mint az az ablak, amely az új ablakok megnyitásakor volt aktív.
A lényeg: A múltban, ha megnyitott egy munkafüzetet vagy bővítményt, amely módosított helyi menükben, biztos lehetett abban, hogy a módosított helyi menük minden munkafüzetben elérhetők voltak. Már nincs meg ez a biztosíték.
Hozzon létre egyéni helyi menüket az Access 2007-ben
A makrótervezési ablak eltér az Access 2007-ben a későbbi verzióktól, ezért ha Access 2007-et használ, bontsa ki a következő szakaszokat.
1. lépés az Access 2007-hez: Hozzon létre egy makrócsoportot, amely tartalmazza a menüparancsokat
Ebben a lépésben létrehoz egy makrócsoportot, amelynek minden makrója külön parancs lesz a helyi menüben.
Mi az a makrócsoport?
A makrócsoport egyetlen makróobjektum, amely két vagy több független makrót tartalmaz. Az egyes makrók azonosítása úgy történik, hogy a Makrónevek oszlopban minden makróra nevet írunk be. A következő ábrán a Macro3 egy makrócsoport. A NotFoundMsg és a FoundMsg különálló makrók a csoporton belül, mindegyik makró két makróműveletből áll.
Megjegyzés: A Makró neve oszlop alapértelmezés szerint el van rejtve. A Makró neve oszlop megjelenítéséhez a Tervezés lap Megjelenítés/elrejtés csoportjában kattintson a Makrónevek elemre .
-
A Létrehozás lap Egyéb csoportjában kattintson a Makró elemre . Ha ez a parancs nem érhető el, kattintson a Modul vagy az Osztálymodul gomb alatti nyílra , majd kattintson a Makró elemre .
-
A Tervezés lap Megjelenítés/elrejtés csoportjában kattintson a Makrónevek lehetőségre a Makrónév oszlop megjelenítéséhez .
-
Minden egyes parancshoz, amelyet az egyéni helyi menüben szeretne megjeleníteni:
-
A Makró neve oszlopban írja be a helyi menüben megjeleníteni kívánt szöveget (például "Jelentés nyomtatása" vagy "Mentés").
Megjegyzés: Ha hozzáférési kulcsot szeretne létrehozni, hogy a billentyűzet segítségével válassza ki a parancsot, írjon be egy "és" jelet (&) a parancs nevében a hozzáférési kulcsként használni kívánt betű elé (például "&Mentés"). Ez a betű aláhúzva lesz a menüben.
-
A Művelet oszlopban válassza ki az első műveletet, amelyet a helyi menü parancsára kattintva végrehajtani szeretne.
-
Ha a parancs kiválasztásakor több műveletet szeretne végrehajtani, adja hozzá azokat a következő sorokhoz. Minden további műveletnél hagyja üresen a Makrónév cellát.
Megjegyzés: Két menüparancs közötti vonal létrehozásához írjon be egy kötőjelet (-) a Makrónév oszlopba a megfelelő menüparancsok közé.
-
Mentse el és nevezze el a makrót, például mcrShortcutMenuCommands .
A következő ábra egy példa makrócsoportot mutat be egyéni menühöz vagy helyi menühöz.
2. lépés az Access 2007-hez: Hozzon létre egy makrót, amely létrehozza a menüt
Ez a lépés feleslegesnek tűnhet, de az 1. lépésben létrehozott makrócsoportból a helyi menü létrehozásához létre kell hoznia egy második makrót, amely tartalmazza az AddMenu makróműveletet. Ezt a makrót néha "menü makrónak" is nevezik.
-
A Létrehozás lap Egyéb csoportjában kattintson a Makró elemre . Ha ez a parancs nem érhető el, kattintson a Modul vagy az Osztálymodul gomb alatti nyílra , majd kattintson a Makró elemre .
-
A makró első sorában válassza az AddMenu lehetőséget a Művelet listában .
-
A Műveletargumentumok alatt a Menü neve mezőbe írja be a menü nevét (például "Jelentésparancsok"). Ez az argumentum nem kötelező, de akkor ajánlott, ha a 3. lépésben a menüt egy Szalaglaphoz kívánja hozzáadni (például egy űrlap vagy jelentés Bővítmények lapjához ). Ha a menüt a 3. lépésben helyi menüként adják hozzá, a Menü neve argumentumot figyelmen kívül hagyja.
-
A Menü Makró neve mezőbe írja be az 1. lépésben létrehozott makró nevét.
-
Mentse el és nevezze el a makrót, például mcrAddShortcutMenu .
A következő ábra egy példamenü makrót mutat be, amely létrehozza az 1. lépésben általunk tervezett menüt.
3. lépés az Access 2007 esetében: Csatolja a menüt egy vezérlőhöz, űrlaphoz, jelentéshez vagy adatbázishoz
Attól függően, hogy hol szeretné megjeleníteni a menüt, használja az alábbi eljárások közül egyet vagy többet.
-
Adja hozzá a menüt egy űrlap vagy jelentés Bővítmények lapjához
Használja ezt az eljárást, ha azt szeretné, hogy a menü megjelenjen a Bővítmények lapon egy adott űrlaphoz vagy jelentéshez, ahogy az az alábbi ábrán látható:
-
A navigációs ablakban kattintson jobb gombbal arra az űrlapra vagy jelentésre, ahol meg szeretné jeleníteni a menüt, majd kattintson a Tervező nézet parancsra .
-
A Tervezés lap Megjelenítés/elrejtés csoportjában kattintson a Tulajdonságlap elemre .
-
Jelölje ki a teljes objektumot az Űrlap vagy Jelentés kiválasztásával a Tulajdonságlap munkaablak tetején található listából.
-
A Tulajdonságlap Egyéb lapján a Parancsikon menü tulajdonság mezőbe írja be a 2. lépésben létrehozott makró nevét (ebben a példában „mcrAddShortcutMenu”).
Az űrlap vagy jelentés következő megnyitásakor a Bővítmények lap jelenik meg a szalagon. Kattintson a fülre a menü megtekintéséhez.
A szalagok testreszabási technikáiról, például egyéni lapok hozzáadásával vagy az alapértelmezett lapok elrejtésével kapcsolatos további információkért tekintse meg az Egyéni szalag létrehozása az Accessben című cikket .
A szalag a Microsoft Office Fluent felhasználói felület egyik összetevője.
-
Adja hozzá a menüt egy űrlaphoz, jelentéshez vagy vezérlőelemhez helyi menüként
Használja ezt az eljárást, ha azt szeretné, hogy a menü megjelenjen, amikor jobb gombbal kattint egy adott űrlapra, jelentésre vagy vezérlőelemre, ahogy az alábbi ábrán látható:
-
A navigációs ablakban kattintson jobb gombbal arra az űrlapra vagy jelentésre, ahol meg szeretné jeleníteni a helyi menüt, majd kattintson a Tervező nézet parancsra .
-
A Tervezés lap Megjelenítés/elrejtés csoportjában kattintson a Tulajdonságlap elemre .
-
Válassza ki azt a vezérlőt vagy objektumot, amelyhez a helyi menüt csatolni szeretné.
Megjegyzés: A teljes objektum kijelöléséhez válassza az Űrlap vagy Jelentés lehetőséget a Tulajdonságlap munkaablak tetején található listából.
-
A Tulajdonságlap Egyéb lapján a Parancsikon menüsor tulajdonság mezőbe írja be a 2. lépésben létrehozott makró nevét (ebben a példában „mcrAddShortcutMenu”).
-
Adja hozzá a menüt globális helyi menüként
Ez az eljárás lecseréli az összes alapértelmezett helyi menüt az aktuális adatbázisban. Ez nem érinti az egyes űrlapokhoz, jelentésekhez vagy vezérlőelemekhez csatolt egyéni helyi menüket.
-
Kattintson a Microsoft Office gombra , majd kattintson a Hozzáférési beállítások elemre .
-
Az Access Options párbeszédpanelen kattintson az Aktuális adatbázis elemre .
-
A Szalag és eszköztár beállításai alatt a Parancsikon menüsor mezőbe írja be a 2. lépésben létrehozott makró nevét (ebben a példában „mcrAddShortcutMenu”).
-
Az egyéni helyi menük felváltják a hozzájuk csatolt objektumok alapértelmezett helyi menüit. Ha meg szeretne tartani bizonyos Access-parancsokat ezekben a menükben, használja a RunCommand műveletet, hogy a parancsokat a kívánt menük makrócsoportjaiba helyezze.
-
A vezérlőhöz csatolt egyéni helyi menü felülír minden más, az adatbázisban definiált egyéni helyi menüt. Az űrlaphoz vagy jelentéshez csatolt egyéni helyi menü felülírja az egyéni globális helyi menüt.
-
Amikor menümakrót ad meg egy űrlaphoz, jelentéshez vagy adatbázishoz, az Access ezt a menümakrót futtatja, amikor az űrlapot, jelentést vagy adatbázist megnyitja. Ha módosítja a menümakrót vagy a parancsait meghatározó makrócsoportot, miközben az űrlap, jelentés vagy adatbázis nyitva van, be kell zárnia az űrlapot, jelentést vagy adatbázist, majd újra meg kell nyitnia a módosítások megtekintéséhez.
-
Almenü létrehozásához kövesse az 1. lépést egy különálló makrócsoport létrehozásához, amely csak az almenü parancsait tartalmazza. Ezután ismét kövesse az 1. lépést a magasabb szintű menü parancsainak meghatározásához. Adja hozzá az almenüt elemként a magasabb szintű makrócsoporthoz az AddMenu makróművelet segítségével. Az alábbi ábra egy almenüt tartalmazó menü makrócsoportját mutatja, majd az eredményül kapott helyi menüt. A makrócsoport harmadik sora létrehozza az Exportálás ide... almenüt ( mcrSubMenu ).
Több szintű almenüt hozhat létre az AddMenu műveletek használatával a makrócsoportokban az egyes menüszintekhez. Ügyeljen arra, hogy minden AddMenu művelethez adjon meg egy értéket a Menü neve argumentumhoz , különben az almenü üres sorként jelenik meg a magasabb szintű menüben.
-
A makrófeltételeket csak a legfelső szintű menümakró támogatja. Más szóval, a menümakró feltételével meghatározhatja, hogy egy adott menü vagy helyi menü megjelenjen-e, de csak a legfelső szintű menük esetében. Nem használhat feltételeket parancsok vagy almenük megjelenítésére vagy elrejtésére a menükben. Egyedi helyi menü vagy globális helyi menü elrejtésére vagy megjelenítésére is használhat feltételt.
-
A 2. lépésben létrehozott menümakró opcionálisan része lehet egy makrócsoportnak. Ha például több helyi menüvel rendelkezik különböző objektumokhoz vagy vezérlőelemekhez, létrehozhat egyetlen makróobjektumot, amely tartalmazza az összes szükséges menümakrót. Győződjön meg arról, hogy megjelenik a Makró neve oszlop, és minden makróhoz írjon be egy egyedi nevet. A 3. lépésben a következő jelöléssel hivatkozzon a makróra: makrócsoportnév.makrónév . Például mcrAddShortcutMenus.AddMenu2 .