Før Excel 2007 brugte VBA-programmører CommandBar-objektet til at oprette brugerdefinerede menuer, brugerdefinerede værktøjslinjer og brugerdefinerede genvejsmenuer (højreklik). Fra og med Excel 2007 er CommandBar-objektet i en ret underlig position. Hvis du skriver kode for at tilpasse en menu eller en værktøjslinje, opsnapper Excel denne kode og ignorerer mange af dine kommandoer.
I stedet for at vise din gennemtænkte grænsefladeforbedring, dumper Excel 2007 (ligesom senere versioner) blot dine tilpassede menuer og værktøjslinjer ind i en fane på båndet med navnet Add-Ins.
Menu- og værktøjslinjetilpasninger ender i Tilføjelsesprogrammer → Menukommandoer eller Tilføjelsesprogrammer → Brugerdefinerede værktøjslinjer. Men at tilpasse genvejsmenuer (som også bruger CommandBar-objektet) fungerer stadig, som det altid har gjort - ja, sådan set.
Bundlinie? CommandBar-objektet er ikke særlig nyttigt længere, men det er stadig den eneste måde at tilpasse genvejsmenuer på.
Tilføjelse af et nyt element til celle-genvejsmenuen
Nedenfor finder du eksempelkode, der tilføjer et nyt element til genvejsmenuen, der vises, når du højreklikker på en celle. Du bør være i stand til at tilpasse disse eksempler til dine behov.
Du kan forbedre værktøjet Change Case en smule ved at gøre det tilgængeligt fra Celle-genvejsmenuen.
AddToShortcut-proceduren tilføjer et nyt menupunkt til Celle-genvejsmenuen. Du kan tilpasse den til at pege på dine egne makroer ved at ændre egenskaberne Caption og OnAction for objektet med navnet NewControl.
Sub AddToShortCut()
Dim Bar Som CommandBar
Dæmp NewControl As CommandBarButton
Slet Fra genvej
Set Bar = Application.CommandBars(“Cell”)
Indstil NewControl = Bar.Controls.Add _
(Type:=msoControlButton, ID:=1, _
midlertidig:=True)
Med NewControl
.Caption = "&Skift sag"
.OnAction = "ChangeCase"
.Style = msoButtonIconAndCaption
Slut med
Slut Sub
Når du ændrer en genvejsmenu, forbliver denne ændring i kraft, indtil du genstarter Excel. Med andre ord nulstilles ændrede genvejsmenuer ikke sig selv, når du lukker projektmappen, der indeholder VBA-koden. Derfor, hvis du skriver kode for at ændre en genvejsmenu, skriver du næsten altid kode for at vende effekten af din ændring.
DeleteFromShortcut-proceduren fjerner det nye menupunkt fra Celle-genvejsmenuen:
Sub DeleteFromShortcut()
Ved fejl Genoptag Næste
Application.CommandBars(“Celle”).Kontroller _
("&Skift sag"). Slet
Slut Sub
Dette viser, hvordan det nye menupunkt blev vist, når du højreklikker på en celle.
Cellegenvejsmenuen, der viser et brugerdefineret menupunkt: Skift mellem store og små bogstaver.
Den første egentlige kommando efter erklæringen af et par variable kalder DeleteFromShortcut-proceduren. Denne erklæring sikrer, at der kun vises ét menupunkt Skift sag på genvejsmenuen Celle. Prøv at kommentere den linje (sæt en apostrof i starten af linjen) og kør proceduren et par gange - men lad dig ikke rive med!
Højreklik på en celle, og du kan se flere forekomster af menupunktet Skift sag. Slip af med alle indtastninger ved at køre DeleteFromShortcut flere gange (én gang for hvert ekstra menupunkt).
Endelig har du brug for en måde at tilføje genvejsmenupunktet, når projektmappen åbnes, og at slette menupunktet, når projektmappen er lukket. Det er nemt at gøre dette. Du skal blot tilføje disse to hændelsesprocedurer til ThisWorkbook-kodemodulet:
Privat underarbejdsbog_Åben()
Kald AddToShortCut
Slut Sub
Privat underarbejdsbog_BeforeClose(Annuller som boolesk)
Ring til DeleteFromShortcut
Slut Sub
Workbook_Open-proceduren udføres, når projektmappen åbnes, og Workbook_BeforeClose-proceduren udføres, før projektmappen lukkes. Lige hvad lægen har bestilt.
Hvad er anderledes i Excel 2013 og Excel 2016?
Hvis du har brugt VBA til at arbejde med genvejsmenuer i Excel 2007 eller tidligere, skal du være opmærksom på en væsentlig ændring.
Tidligere, hvis din kode ændrede en genvejsmenu, var denne ændring gældende for alle projektmapper. Hvis du f.eks. føjede et nyt element til cellehøjrekliksmenuen, vil det nye element blive vist, når du højreklikker på en celle i en projektmappe (plus andre projektmapper, som du åbner senere). Med andre ord blev der foretaget genvejsmenuændringer på applikationsniveau .
Excel 2013 og Excel 2016 bruger en enkelt dokumentgrænseflade, og det påvirker genvejsmenuer. Ændringer, du foretager i genvejsmenuer, påvirker kun det aktive projektmappevindue. Når du udfører koden, der ændrer genvejsmenuen, ændres genvejsmenuen for andre vinduer end det aktive vindue ikke. Dette er en radikal afvigelse fra, hvordan tingene plejede at fungere.
En anden drejning: Hvis brugeren åbner en projektmappe (eller opretter en ny projektmappe), når det aktive vindue viser den ændrede genvejsmenu, viser den nye projektmappe også den ændrede genvejsmenu. Med andre ord viser nye vinduer de samme genvejsmenuer som det vindue, der var aktivt, da de nye vinduer blev åbnet.
Nederste linje: Hvis du tidligere åbnede en projektmappe eller et tilføjelsesprogram, der ændrede genvejsmenuer, kunne du være sikker på, at de ændrede genvejsmenuer ville være tilgængelige i alle projektmapper. Den sikkerhed har du ikke længere.
Opret brugerdefinerede genvejsmenuer i Access 2007
Makrodesignvinduet er anderledes i Access 2007 sammenlignet med senere versioner, så udvid de følgende sektioner for at følge med, hvis du bruger Access 2007.
Trin 1 for Access 2007: Opret en makrogruppe, der indeholder menukommandoer
I dette trin opretter du en makrogruppe, hvor hver makro vil være en separat kommando på din genvejsmenu.
Hvad er en makrogruppe?
En makrogruppe er et enkelt makroobjekt, der indeholder to eller flere uafhængige makroer. De individuelle makroer identificeres ved at indtaste et navn for hver makro i kolonnen Makronavne. I den følgende illustration er Macro3 en makrogruppe. NotFoundMsg og FoundMsg er individuelle makroer inden for gruppen, hver makro består af to makrohandlinger.
Bemærk: Kolonnen Makronavn er skjult som standard. For at få vist kolonnen Makronavn skal du på fanen Design i gruppen Vis/skjul klikke på Makronavne .
-
På fanen Opret i gruppen Andet skal du klikke på Makro . Hvis denne kommando ikke er tilgængelig, skal du klikke på pilen under enten Modul- eller Klassemodul- knappen og derefter klikke på Makro .
-
På fanen Design i gruppen Vis/skjul skal du klikke på Makronavne for at få vist kolonnen Makronavn .
-
For hver kommando, du ønsker på din brugerdefinerede genvejsmenu:
-
I kolonnen Makronavn skal du indtaste den tekst, du vil have vist på genvejsmenuen (f.eks. "Udskriv rapport" eller "Gem").
Bemærk: For at oprette en adgangsnøgle, så du kan bruge tastaturet til at vælge kommandoen, skal du skrive et og-tegn (&) før det bogstav, som du ønsker skal være adgangstasten i kommandonavnet (f.eks. "&Gem"). Dette brev vil blive understreget i menuen.
-
I kolonnen Handling skal du vælge den første handling, du ønsker at udføre, når du klikker på kommandoen i genvejsmenuen.
-
Hvis der er flere handlinger, du ønsker skal udføres, når du vælger denne kommando, skal du tilføje dem på de efterfølgende linjer. Lad cellen Makronavn stå tom for hver efterfølgende handling .
Bemærk: For at oprette en linje mellem to menukommandoer skal du skrive en bindestreg (-) i kolonnen Makronavn mellem de relevante menukommandoer.
-
Gem og navngiv makroen, for eksempel mcrShortcutMenuCommands .
Den følgende illustration viser et eksempel på en makrogruppe for en brugerdefineret menu eller genvejsmenu.
Trin 2 for Access 2007: Opret en makro, der opretter menuen
Dette trin kan virke overflødigt, men for at oprette genvejsmenuen fra den makrogruppe, du oprettede i trin 1, skal du oprette en anden makro, der indeholder AddMenu- makrohandlingen . Denne makro kaldes nogle gange "menumakroen".
-
På fanen Opret i gruppen Andet skal du klikke på Makro . Hvis denne kommando ikke er tilgængelig, skal du klikke på pilen under enten Modul- eller Klassemodul- knappen og derefter klikke på Makro .
-
På den første linje i makroen skal du vælge AddMenu på handlingslisten .
-
Under Handlingsargumenter skal du i feltet Menunavn indtaste navnet på menuen (f.eks. "Rapportkommandoer"). Dette argument er ikke påkrævet, men anbefales, hvis du i trin 3 planlægger at tilføje menuen til en båndfane (såsom fanen Tilføjelser i en formular eller rapport). Hvis menuen tilføjes som en genvejsmenu i trin 3, ignoreres argumentet Menunavn .
-
Indtast navnet på den makro, du oprettede i trin 1, i feltet Menu Macro Name .
-
Gem og navngiv makroen, for eksempel mcrAddShortcutMenu .
Den følgende illustration viser et eksempel på en menumakro, der skaber den menu, vi designede i trin 1.
Trin 3 for Access 2007: Vedhæft menuen til en kontrol, formular, rapport eller database
Afhængigt af hvor du ønsker menuen skal vises, skal du bruge en eller flere af følgende procedurer.
-
Tilføj menuen til fanen Tilføjelsesprogrammer i en formular eller rapport
Brug denne procedure, hvis du ønsker, at menuen skal vises på fanen Tilføjelsesprogrammer for en specifik formular eller rapport, som vist i følgende illustration:
-
I navigationsruden skal du højreklikke på den formular eller rapport, hvor menuen skal vises, og derefter klikke på Designvisning .
-
På fanen Design i gruppen Vis/skjul skal du klikke på Egenskabsark .
-
Vælg hele objektet ved at vælge Form eller Rapport fra listen øverst i opgaveruden Egenskabsark.
-
Skriv navnet på den makro, du oprettede i trin 2 (i dette eksempel, "mcrAddShortcutMenu") i genvejsmenuegenskabsfeltet på fanen Andet på egenskabsarket .
Næste gang du åbner formularen eller rapporten, vises fanen Tilføjelser på båndet. Klik på fanen for at se menuen.
For flere oplysninger om teknikker til tilpasning af bånd, såsom tilføjelse af brugerdefinerede faner eller skjulning af standardfaner, se artiklen Opret et brugerdefineret bånd i Access .
Båndet er en komponent i Microsoft Office Fluent-brugergrænsefladen.
-
Tilføj menuen som en genvejsmenu til en formular, rapport eller kontrol
Brug denne procedure, hvis du ønsker, at menuen skal vises, når du højreklikker på en specifik formular, rapport eller kontrol, som vist i følgende illustration:
-
I navigationsruden skal du højreklikke på den formular eller rapport, hvor genvejsmenuen skal vises, og derefter klikke på Designvisning .
-
På fanen Design i gruppen Vis/skjul skal du klikke på Egenskabsark .
-
Vælg den kontrol eller det objekt, som du vil vedhæfte genvejsmenuen til.
Bemærk: For at vælge hele objektet skal du vælge Formular eller Rapport fra listen øverst i opgaveruden Egenskabsark.
-
Skriv navnet på den makro, du oprettede i trin 2 (i dette eksempel, "mcrAddShortcutMenu") på fanen Andet på egenskabsarket i genvejsmenulinjens egenskabsboks .
-
Tilføj menuen som en global genvejsmenu
Denne procedure erstatter alle standardgenvejsmenuerne i den aktuelle database. Brugerdefinerede genvejsmenuer, som du har knyttet til bestemte formularer, rapporter eller kontrolelementer, påvirkes ikke.
-
Klik på Microsoft Office-knappen , og klik derefter på Adgangsindstillinger .
-
Klik på Aktuel database i dialogboksen Adgangsindstillinger .
-
Skriv navnet på den makro, du oprettede i trin 2 (i dette eksempel, "mcrAddShortcutMenu") i feltet Genvejsmenulinje under Indstillinger for bånd og værktøjslinje .
-
Brugerdefinerede genvejsmenuer erstatter standardgenvejsmenuerne for de objekter, de er knyttet til. Hvis du vil beholde visse Access-kommandoer til brug på disse menuer, skal du bruge handlingen RunCommand til at placere kommandoerne i makrogrupperne for de menuer, du vil have dem i.
-
En brugerdefineret genvejsmenu, der er knyttet til en kontrol, erstatter alle andre brugerdefinerede genvejsmenuer, der er defineret i databasen. En tilpasset genvejsmenu, der er knyttet til en formular eller rapport, erstatter en tilpasset global genvejsmenu.
-
Når du angiver en menumakro for en formular eller rapport eller for databasen, kører Access denne menumakro, hver gang formularen, rapporten eller databasen åbnes. Hvis du foretager ændringer i menumakroen eller makrogruppen, der definerer dens kommandoer, mens formularen, rapporten eller databasen er åben, skal du lukke formularen, rapporten eller databasen og genåbne den for at se ændringerne.
-
For at oprette en undermenu skal du følge trin 1 for at oprette en separat makrogruppe, der kun indeholder undermenukommandoer. Følg derefter trin 1 igen for at definere kommandoerne for menuen på højere niveau. Tilføj undermenuen som et element i makrogruppen på højere niveau ved at bruge makrohandlingen TilføjMenu . Den følgende illustration viser makrogruppen for en menu, der indeholder en undermenu, og viser derefter den resulterende genvejsmenu. Den tredje linje i makrogruppen opretter undermenuen Eksporter til... ( mcrSubMenu ).
Du kan oprette flere niveauer af undermenuer ved at bruge AddMenu- handlinger i makrogrupperne for hvert menuniveau. Sørg for at angive en værdi for menunavnargumentet for hver AddMenu- handling, ellers vises undermenuen som en tom linje i menuen på højere niveau.
-
Makrobetingelser understøttes kun i menumakroen på øverste niveau. Med andre ord kan du bruge en betingelse i en menumakro til at bestemme, om en bestemt menu eller genvejsmenu vil blive vist, men kun for menuerne på øverste niveau. Du kan ikke bruge betingelser til at vise eller skjule kommandoer eller undermenuer i menuerne. Du kan også bruge en betingelse til at skjule eller vise en brugerdefineret genvejsmenu eller global genvejsmenu.
-
Valgfrit kan menumakroen, som du opretter i trin 2, være en del af en makrogruppe. For eksempel, hvis du har flere genvejsmenuer til forskellige objekter eller kontrolelementer, kan du oprette et enkelt makroobjekt, der indeholder alle de nødvendige menumakroer. Sørg for at vise kolonnen Makronavn og skriv et unikt navn for hver makro. I trin 3 skal du bruge følgende notation til at henvise til makroen: makrogruppenavn.makronavn . For eksempel mcrAddShortcutMenus.AddMenu2 .