Före Excel 2007 använde VBA-programmerare CommandBar-objektet för att skapa anpassade menyer, anpassade verktygsfält och anpassade genvägsmenyer (högerklicka). Från och med Excel 2007 är CommandBar-objektet i en ganska udda position. Om du skriver kod för att anpassa en meny eller ett verktygsfält, fångar Excel upp den koden och ignorerar många av dina kommandon.
Istället för att visa din genomtänkta gränssnittsförbättring, dumpar Excel 2007 (som senare versioner) helt enkelt dina anpassade menyer och verktygsfält i en sammanfattande menyflik som heter Add-Ins.
Meny- och verktygsfältsanpassningar hamnar i gruppen Tillägg → Menykommandon eller gruppen Tillägg → Anpassade verktygsfält. Men att anpassa genvägsmenyer (som också använder CommandBar-objektet) fungerar fortfarande som det alltid har gjort - ja, typ.
Slutsats? CommandBar-objektet är inte särskilt användbart längre, men det är fortfarande det enda sättet att anpassa genvägsmenyer.
Lägga till ett nytt objekt till snabbmenyn för cell
Nedan hittar du exempelkod som lägger till ett nytt objekt till genvägsmenyn som visas när du högerklickar på en cell. Du bör kunna anpassa dessa exempel efter dina behov.
Du kan förbättra verktyget Change Case lite genom att göra det tillgängligt från snabbmenyn Cell.
Proceduren AddToShortcut lägger till ett nytt menyalternativ till genvägsmenyn för cell. Du kan anpassa den för att peka på dina egna makron genom att ändra egenskaperna Caption och OnAction för objektet som heter NewControl.
Sub AddToShortCut()
Dimbar som kommandofält
Dim NewControl As CommandBarButton
DeleteFromShortcut
Set Bar = Application.CommandBars(“Cell”)
Set NewControl = Bar.Controls.Add _
(Typ:=msoControlButton, ID:=1, _
tillfälligt:=Sant)
Med NewControl
.Caption = "&Ändra skiftläge"
.OnAction = "ChangeCase"
.Style = msoButtonIconAndCaption
Sluta med
Avsluta Sub
När du ändrar en genvägsmeny förblir den ändringen i kraft tills du startar om Excel. Med andra ord, ändrade genvägsmenyer återställs inte sig själva när du stänger arbetsboken som innehåller VBA-koden. Därför, om du skriver kod för att ändra en genvägsmeny, skriver du nästan alltid kod för att vända effekten av din modifiering.
Proceduren DeleteFromShortcut tar bort det nya menyalternativet från snabbmenyn Cell:
Sub DeleteFromShortcut()
Vid fel Resume Next
Application.CommandBars(“Cell”).Kontroller _
("&Ändra skiftläge"). Ta bort
Avsluta Sub
Detta visar hur det nya menyalternativet visas efter att du högerklickar på en cell.
Genvägsmenyn för cell som visar ett anpassat menyalternativ: Ändra skiftläge.
Det första faktiska kommandot efter deklarationen av ett par variabler anropar DeleteFromShortcut-proceduren. Detta uttalande säkerställer att endast ett menyalternativ Ändra fall visas på snabbmenyn Cell. Försök att kommentera den raden (lägg en apostrof i början av raden) och kör proceduren några gånger - men låt dig inte ryckas med!
Högerklicka på en cell så kan du se flera instanser av menyalternativet Ändra skiftläge. Bli av med alla poster genom att köra DeleteFromShortcut flera gånger (en gång för varje extra menyalternativ).
Slutligen behöver du ett sätt att lägga till genvägsmenyobjektet när arbetsboken öppnas och att ta bort menyalternativet när arbetsboken är stängd. Att göra detta är lätt. Lägg bara till dessa två händelseprocedurer till ThisWorkbook-kodmodulen:
Privat underarbetsbok_Öppen()
Ring AddToShortCut
Avsluta Sub
Privat underarbetsbok_BeforeClose(Avbryt som boolesk)
Ring DeleteFromShortcut
Avsluta Sub
Proceduren Workbook_Open körs när arbetsboken öppnas och Workbook_BeforeClose-proceduren körs innan arbetsboken stängs. Precis vad läkaren beordrade.
Vad är skillnaden i Excel 2013 och Excel 2016?
Om du har använt VBA för att arbeta med genvägsmenyer i Excel 2007 eller tidigare måste du vara medveten om en betydande förändring.
Tidigare, om din kod ändrade en genvägsmeny, gällde den ändringen för alla arbetsböcker. Om du till exempel lade till ett nytt objekt till högerklicksmenyn för cell, skulle det nya objektet visas när du högerklickade på en cell i en arbetsbok (plus andra arbetsböcker som du öppnar senare). Med andra ord gjordes genvägsmenyändringar på applikationsnivå .
Excel 2013 och Excel 2016 använder ett enda dokumentgränssnitt, och det påverkar genvägsmenyer. Ändringar som du gör i genvägsmenyer påverkar endast det aktiva arbetsboksfönstret. När du kör koden som ändrar genvägsmenyn ändras inte genvägsmenyn för andra fönster än det aktiva fönstret. Detta är ett radikalt avsteg från hur saker och ting fungerade.
En annan twist: Om användaren öppnar en arbetsbok (eller skapar en ny arbetsbok) när det aktiva fönstret visar den ändrade genvägsmenyn, visar den nya arbetsboken också den ändrade genvägsmenyn. Med andra ord visar nya fönster samma genvägsmenyer som det fönster som var aktivt när de nya fönstren öppnades.
Slutsats: Tidigare, om du öppnade en arbetsbok eller ett tillägg som ändrade genvägsmenyer, kunde du vara säker på att de ändrade genvägsmenyerna skulle vara tillgängliga i alla arbetsböcker. Du har inte längre den garantin.
Skapa anpassade genvägsmenyer i Access 2007
Makrodesignfönstret är annorlunda i Access 2007 jämfört med senare versioner, så utöka följande avsnitt för att följa med om du använder Access 2007.
Steg 1 för Access 2007: Skapa en makrogrupp som innehåller menykommandon
I det här steget skapar du en makrogrupp, vars varje makro kommer att vara ett separat kommando på din snabbmeny.
Vad är en makrogrupp?
En makrogrupp är ett enda makroobjekt som innehåller två eller flera oberoende makron. De enskilda makrona identifieras genom att skriva ett namn för varje makro i kolumnen Makronamn. I följande illustration är Macro3 en makrogrupp. NotFoundMsg och FoundMsg är individuella makron inom gruppen, varje makro består av två makroåtgärder.
Obs: Kolumnen Makronamn är dold som standard. Om du vill visa kolumnen Makronamn klickar du på Makronamn på fliken Design i gruppen Visa/dölj .
-
På fliken Skapa , i gruppen Annat , klicka på Makro . Om det här kommandot inte är tillgängligt klickar du på pilen under antingen knappen Module eller Class Module och klickar sedan på Makro .
-
På fliken Design , i gruppen Visa/dölj , klicka på Makronamn för att visa kolumnen Makronamn .
-
För varje kommando som du vill ha på din anpassade genvägsmeny:
-
I kolumnen Makronamn anger du texten som du vill visa på snabbmenyn (till exempel "Skriv ut rapport" eller "Spara").
Obs: För att skapa en åtkomstnyckel så att du kan använda tangentbordet för att välja kommandot, skriv ett och-tecken (&) före bokstaven som du vill ska vara åtkomstnyckeln i kommandonamnet (till exempel "&Spara"). Detta brev kommer att vara understruket på menyn.
-
I kolumnen Åtgärd väljer du den första åtgärd du vill utföra när du klickar på kommandot på genvägsmenyn.
-
Om det finns fler åtgärder som du vill ska utföras när du väljer det här kommandot, lägg till dem på de efterföljande raderna. Lämna cellen Makronamn tom för varje efterföljande åtgärd .
Obs! För att skapa en rad mellan två menykommandon, skriv ett bindestreck (-) i kolumnen Makronamn mellan lämpliga menykommandon.
-
Spara och namnge makrot, till exempel mcrShortcutMenuCommands .
Följande illustration visar ett exempel på en makrogrupp för en anpassad meny eller genvägsmeny.
Steg 2 för Access 2007: Skapa ett makro som skapar menyn
Det här steget kan verka överflödigt, men för att skapa genvägsmenyn från makrogruppen som du skapade i steg 1 måste du skapa ett andra makro som innehåller makroåtgärden AddMenu . Detta makro kallas ibland "menymakrot".
-
På fliken Skapa , i gruppen Annat , klicka på Makro . Om det här kommandot inte är tillgängligt klickar du på pilen under antingen knappen Module eller Class Module och klickar sedan på Makro .
-
På den första raden i makrot, välj AddMenu i åtgärdslistan .
-
Under Åtgärdsargument i rutan Menynamn skriver du namnet på menyn (till exempel "Rapportkommandon"). Detta argument krävs inte, men rekommenderas om du i steg 3 planerar att lägga till menyn på en menyflik (som fliken Tillägg i ett formulär eller en rapport). Om menyn läggs till som en genvägsmeny i steg 3 ignoreras menynamnsargumentet .
-
I rutan Menymakronamn anger du namnet på makrot som du skapade i steg 1.
-
Spara och namnge makrot, till exempel mcrAddShortcutMenu .
Följande illustration visar ett exempel på ett menymakro som skapar menyn vi designade i steg 1.
Steg 3 för Access 2007: Bifoga menyn till en kontroll, formulär, rapport eller databas
Beroende på var du vill att menyn ska visas, använd en eller flera av följande procedurer.
-
Lägg till menyn på fliken Tillägg i ett formulär eller en rapport
Använd den här proceduren om du vill att menyn ska visas på fliken Tillägg för ett specifikt formulär eller rapport, som visas i följande illustration:
-
I navigeringsfönstret högerklickar du på formuläret eller rapporten där du vill att menyn ska visas och klickar sedan på Designvy .
-
På fliken Design , i gruppen Visa/dölj , klickar du på Egenskapsblad .
-
Välj hela objektet genom att välja Formulär eller Rapport från listan överst i egenskapsbladets uppgiftspanel.
-
På fliken Annat på egenskapsbladet, i egenskapsrutan Genvägsmeny , skriv namnet på makrot som du skapade i steg 2 (i det här exemplet "mcrAddShortcutMenu").
Nästa gång du öppnar formuläret eller rapporten, visas fliken Tillägg i menyfliksområdet. Klicka på fliken för att se menyn.
Mer information om tekniker för anpassning av band, som att lägga till anpassade flikar eller dölja standardflikarna, finns i artikeln Skapa ett anpassat menyfliksställe i Access .
The Ribbon är en komponent i Microsoft Office Fluent-användargränssnittet.
-
Lägg till menyn som en genvägsmeny för ett formulär, rapport eller kontroll
Använd den här proceduren om du vill att menyn ska visas när du högerklickar på ett specifikt formulär, rapport eller kontroll, som visas i följande illustration:
-
I navigeringsfönstret högerklickar du på formuläret eller rapporten där du vill att genvägsmenyn ska visas och klickar sedan på Designvy .
-
På fliken Design , i gruppen Visa/dölj , klickar du på Egenskapsblad .
-
Välj kontrollen eller objektet som du vill bifoga genvägsmenyn till.
Obs! För att markera hela objektet, välj Formulär eller Rapport från listan överst i egenskapsbladets aktivitetspanel.
-
Skriv namnet på makrot som du skapade i steg 2 (i det här exemplet "mcrAddShortcutMenu") på fliken Annat på egenskapsbladet i egenskapsrutan Genvägsmenyfält .
-
Lägg till menyn som en global genvägsmeny
Denna procedur ersätter alla standardgenvägsmenyer i den aktuella databasen. Anpassade genvägsmenyer som du har bifogat till specifika formulär, rapporter eller kontroller påverkas inte.
-
Klicka på Microsoft Office-knappen och klicka sedan på Åtkomstalternativ .
-
Klicka på Aktuell databas i dialogrutan Åtkomstalternativ .
-
Skriv namnet på makrot som du skapade i steg 2 (i det här exemplet, "mcrAddShortcutMenu") i rutan Genvägsmeny under Alternativ för menyfliksfält och verktygsfält .
-
Anpassade genvägsmenyer ersätter standardgenvägsmenyerna för objekten de är kopplade till. Om du vill behålla vissa Access-kommandon att använda på dessa menyer, använd åtgärden RunCommand för att placera kommandona i makrogrupperna för menyerna du vill ha dem i.
-
En anpassad genvägsmeny som är kopplad till en kontroll ersätter alla andra anpassade genvägsmenyer som är definierade i databasen. En anpassad genvägsmeny som är kopplad till ett formulär eller rapport ersätter en anpassad global genvägsmeny.
-
När du anger ett menymakro för ett formulär eller rapport eller för databasen, kör Access det här menymakrot närhelst formuläret, rapporten eller databasen öppnas. Om du gör ändringar i menymakrot eller makrogruppen som definierar dess kommandon medan formuläret, rapporten eller databasen är öppen, måste du stänga formuläret, rapporten eller databasen och öppna den igen för att se ändringarna.
-
För att skapa en undermeny, följ steg 1 för att skapa en separat makrogrupp som bara innehåller undermenykommandon. Följ sedan steg 1 igen för att definiera kommandona för menyn på högre nivå. Lägg till undermenyn som ett objekt i makrogruppen på högre nivå genom att använda makroåtgärden Lägg till meny . Följande illustration visar makrogruppen för en meny som innehåller en undermeny och visar sedan den resulterande genvägsmenyn. Den tredje raden i makrogruppen skapar undermenyn Exportera till... ( mcrSubMenu ).
Du kan skapa flera nivåer av undermenyer genom att använda AddMenu- åtgärder i makrogrupperna för varje menynivå. Se till att ange ett värde för argumentet Menynamn för varje AddMenu- åtgärd, annars kommer undermenyn att visas som en tom rad i menyn på högre nivå.
-
Makrovillkor stöds endast i menymakrot på översta nivån. Med andra ord kan du använda ett villkor i ett menymakro för att avgöra om en viss meny eller genvägsmeny kommer att visas, men bara för menyerna på översta nivån. Du kan inte använda villkor för att visa eller dölja kommandon eller undermenyer på menyerna. Du kan också använda ett villkor för att dölja eller visa en anpassad genvägsmeny eller global genvägsmeny.
-
Alternativt kan menymakrot som du skapar i steg 2 vara en del av en makrogrupp. Om du till exempel har flera genvägsmenyer för olika objekt eller kontroller kan du skapa ett enda makroobjekt som innehåller alla nödvändiga menymakron. Se till att visa kolumnen Makronamn och skriv ett unikt namn för varje makro. I steg 3 använder du följande notation för att referera till makrot: makrogruppnamn.makronamn . Till exempel, mcrAddShortcutMenus.AddMenu2 .