Før Excel 2007 brukte VBA-programmerere CommandBar-objektet for å lage egendefinerte menyer, egendefinerte verktøylinjer og egendefinerte snarveismenyer (høyreklikk). Fra og med Excel 2007 er CommandBar-objektet i en ganske merkelig posisjon. Hvis du skriver kode for å tilpasse en meny eller en verktøylinje, fanger Excel opp den koden og ignorerer mange av kommandoene dine.
I stedet for å vise den gjennomtenkte grensesnittforbedringen, dumper Excel 2007 (som senere versjoner) ganske enkelt de tilpassede menyene og verktøylinjene inn i en oppsamlingsbånd-fane kalt Add-Ins.
Meny- og verktøylinjetilpasninger havner i Tillegg → Menykommandoer eller Tillegg → Egendefinerte verktøylinjer-gruppen. Men å tilpasse snarveimenyer (som også bruker CommandBar-objektet) fungerer fortsatt som det alltid har gjort - vel, liksom.
Bunnlinjen? CommandBar-objektet er ikke særlig nyttig lenger, men det er fortsatt den eneste måten å tilpasse snarveimenyer.
Legge til et nytt element i Cell-snarveismenyen
Nedenfor finner du eksempelkode som legger til et nytt element i hurtigmenyen som vises når du høyreklikker på en celle. Du bør kunne tilpasse disse eksemplene til dine behov.
Du kan forbedre Change Case-verktøyet litt ved å gjøre det tilgjengelig fra Cell-snarveismenyen.
AddToShortcut-prosedyren legger til et nytt menyelement til Cell-snarveismenyen. Du kan tilpasse den til å peke til dine egne makroer ved å endre Caption- og OnAction-egenskapene til objektet som heter NewControl.
Sub AddToShortCut()
Dim bar som kommandolinje
Dim NewControl As CommandBarButton
Slett fra snarvei
Set Bar = Application.CommandBars(“Cell”)
Sett NewControl = Bar.Controls.Add _
(Type:=msoControlButton, ID:=1, _
midlertidig:=True)
Med NewControl
.Caption = "&Endre sak"
.OnAction = "ChangeCase"
.Style = msoButtonIconAndCaption
Avslutt med
End Sub
Når du endrer en snarveimeny, forblir denne endringen gjeldende til du starter Excel på nytt. Med andre ord, endrede snarveimenyer tilbakestilles ikke seg selv når du lukker arbeidsboken som inneholder VBA-koden. Derfor, hvis du skriver kode for å endre en snarveimeny, skriver du nesten alltid kode for å reversere effekten av endringen.
Prosedyren DeleteFromShortcut fjerner det nye menyelementet fra Cell-snarveismenyen:
Sub DeleteFromShortcut()
Ved feil på Fortsett neste
Application.CommandBars(“Cell”).Kontroller _
("&Endre sak"). Slett
End Sub
Dette viser hvordan det nye menyelementet ble vist etter at du høyreklikker på en celle.
Cell-snarveismenyen som viser et tilpasset menyelement: Endre store og små bokstaver.
Den første faktiske kommandoen etter deklarasjonen av et par variabler kaller DeleteFromShortcut-prosedyren. Denne setningen sikrer at bare ett menyelement Endre sak vises på snarveien Celle-menyen. Prøv å kommentere den linjen (sett en apostrof i begynnelsen av linjen) og kjør prosedyren noen ganger - men ikke la deg rive med!
Høyreklikk på en celle, og du kan se flere forekomster av menyelementet Endre sak. Bli kvitt alle oppføringene ved å kjøre DeleteFromShortcut flere ganger (en gang for hvert ekstra menyelement).
Til slutt trenger du en måte å legge til snarveimenyelementet når arbeidsboken åpnes og slette menyelementet når arbeidsboken lukkes. Å gjøre dette er enkelt. Bare legg til disse to hendelsesprosedyrene til ThisWorkbook-kodemodulen:
Privat underarbeidsbok_Open()
Ring AddToShortCut
End Sub
Privat underarbeidsbok_BeforeClose(Avbryt som boolsk)
Ring DeleteFromShortcut
End Sub
Workbook_Open-prosedyren utføres når arbeidsboken åpnes, og Workbook_BeforeClose-prosedyren utføres før arbeidsboken lukkes. Akkurat det legen bestilte.
Hva er forskjellen i Excel 2013 og Excel 2016?
Hvis du har brukt VBA til å jobbe med snarveimenyer i Excel 2007 eller tidligere, må du være klar over en betydelig endring.
Tidligere, hvis koden din endret en snarveimeny, var denne endringen gjeldende for alle arbeidsbøker. For eksempel, hvis du la til et nytt element til høyreklikkmenyen for celle, vil det nye elementet vises når du høyreklikker en celle i en arbeidsbok (pluss andre arbeidsbøker du åpner senere). Med andre ord ble det gjort endringer i snarveier på applikasjonsnivå .
Excel 2013 og Excel 2016 bruker ett enkelt dokumentgrensesnitt, og det påvirker snarveimenyer. Endringer du gjør i snarveimenyer påvirker bare det aktive arbeidsbokvinduet. Når du kjører koden som endrer hurtigmenyen, vil ikke hurtigmenyen for andre vinduer enn det aktive vinduet bli endret. Dette er et radikalt avvik fra hvordan ting fungerte før.
En annen vri: Hvis brukeren åpner en arbeidsbok (eller oppretter en ny arbeidsbok) når det aktive vinduet viser den endrede snarveimenyen, viser den nye arbeidsboken også den modifiserte hurtigmenyen. Med andre ord viser nye vinduer de samme hurtigmenyene som vinduet som var aktivt da de nye vinduene ble åpnet.
Bunnlinjen: Tidligere, hvis du åpnet en arbeidsbok eller et tillegg som endret snarveimenyer, kunne du være trygg på at de endrede snarveismenyene ville være tilgjengelige i alle arbeidsbøker. Den forsikringen har du ikke lenger.
Lag egendefinerte snarveimenyer i Access 2007
Makrodesignvinduet er annerledes i Access 2007 sammenlignet med senere versjoner, så utvid de følgende delene for å følge med hvis du bruker Access 2007.
Trinn 1 for Access 2007: Opprett en makrogruppe som inneholder menykommandoene
I dette trinnet oppretter du en makrogruppe, der hver makro vil være en egen kommando på hurtigmenyen.
Hva er en makrogruppe?
En makrogruppe er et enkelt makroobjekt som inneholder to eller flere uavhengige makroer. De individuelle makroene identifiseres ved å skrive inn et navn for hver makro i kolonnen Makronavn. I den følgende illustrasjonen er Macro3 en makrogruppe. NotFoundMsg og FoundMsg er individuelle makroer i gruppen, hver makro består av to makrohandlinger.
Merk: Kolonnen Makronavn er skjult som standard. For å vise Makronavn- kolonnen, på Design- fanen, i Vis/Skjul- gruppen, klikk på Makronavn .
-
I kategorien Opprett , i gruppen Annet , klikker du Makro . Hvis denne kommandoen ikke er tilgjengelig, klikker du på pilen under enten Modul- eller Klassemodul- knappen, og klikker deretter Makro .
-
I kategorien Design , i Vis/Skjul- gruppen, klikker du på Makronavn for å vise kolonnen Makronavn .
-
For hver kommando du vil ha på din egendefinerte snarveimeny:
-
I kolonnen Makronavn skriver du inn teksten du vil vise på hurtigmenyen (for eksempel "Skriv ut rapport" eller "Lagre").
Merk: For å opprette en tilgangstast slik at du kan bruke tastaturet til å velge kommandoen, skriv inn et og-tegn (&) før bokstaven som du vil skal være tilgangsnøkkel i kommandonavnet (for eksempel "&Lagre"). Dette brevet vil være understreket på menyen.
-
I Handling- kolonnen velger du den første handlingen du vil utføre når du klikker på kommandoen på hurtigmenyen.
-
Hvis det er flere handlinger du ønsker å utføre når du velger denne kommandoen, legg dem til på de påfølgende linjene. La Makronavn -cellen stå tom for hver påfølgende handling .
Merk: For å lage en linje mellom to menykommandoer, skriv inn en bindestrek (-) i kolonnen Makronavn mellom de aktuelle menykommandoene.
-
Lagre og navngi makroen, for eksempel mcrShortcutMenuCommands .
Følgende illustrasjon viser et eksempel på en makrogruppe for en egendefinert meny eller snarveimeny.
Trinn 2 for Access 2007: Lag en makro som lager menyen
Dette trinnet kan virke overflødig, men for å lage hurtigmenyen fra makrogruppen du opprettet i trinn 1, må du opprette en andre makro som inneholder makrohandlingen AddMenu . Denne makroen kalles noen ganger "menymakroen".
-
I kategorien Opprett , i gruppen Annet , klikker du Makro . Hvis denne kommandoen ikke er tilgjengelig, klikker du på pilen under enten Modul- eller Klassemodul- knappen, og klikker deretter Makro .
-
På den første linjen i makroen velger du AddMenu i handlingslisten .
-
Under Handlingsargumenter i Menynavn- boksen skriver du inn navnet på menyen (for eksempel "Rapportkommandoer"). Dette argumentet er ikke nødvendig, men anbefales hvis du i trinn 3 planlegger å legge til menyen i en båndfane (for eksempel fanen Tillegg i et skjema eller en rapport). Hvis menyen legges til som en snarveimeny i trinn 3, ignoreres menynavnargumentet .
-
I boksen Menu Macro Name skriver du inn navnet på makroen du opprettet i trinn 1.
-
Lagre og navngi makroen, for eksempel mcrAddShortcutMenu .
Følgende illustrasjon viser et eksempel på en menymakro som lager menyen vi utviklet i trinn 1.
Trinn 3 for Access 2007: Legg ved menyen til en kontroll, skjema, rapport eller database
Avhengig av hvor du vil at menyen skal vises, bruk en eller flere av følgende prosedyrer.
-
Legg til menyen i fanen Tillegg i et skjema eller en rapport
Bruk denne prosedyren hvis du vil at menyen skal vises på fanen Tillegg for et bestemt skjema eller rapport, som vist i følgende illustrasjon:
-
I navigasjonsruten høyreklikker du skjemaet eller rapporten der du vil at menyen skal vises, og klikker deretter Design View .
-
På Design- fanen, i Vis/Skjul- gruppen, klikker du Egenskapsark .
-
Velg hele objektet ved å velge Skjema eller Rapport fra listen øverst i oppgavepanelet Egenskapsark.
-
I kategorien Annet på egenskapsarket, i egenskapsboksen Snarveimeny , skriver du inn navnet på makroen du opprettet i trinn 2 (i dette eksemplet "mcrAddShortcutMenu").
Neste gang du åpner skjemaet eller rapporten, vises fanen Tillegg på båndet. Klikk på fanen for å se menyen.
For mer informasjon om båndtilpasningsteknikker, for eksempel å legge til egendefinerte faner eller skjule standardfanene, se artikkelen Opprett et tilpasset bånd i Access .
The Ribbon er en komponent i Microsoft Office Fluent-brukergrensesnittet.
-
Legg til menyen som en snarveimeny for et skjema, rapport eller kontroll
Bruk denne fremgangsmåten hvis du vil at menyen skal vises når du høyreklikker på et bestemt skjema, rapport eller kontroll, som vist i følgende illustrasjon:
-
I navigasjonsruten høyreklikker du skjemaet eller rapporten der du vil at hurtigmenyen skal vises, og klikker deretter Design View .
-
På Design- fanen, i Vis/Skjul- gruppen, klikker du Egenskapsark .
-
Velg kontrollen eller objektet du vil legge ved hurtigmenyen til.
Merk: For å velge hele objektet, velg Skjema eller Rapport fra listen øverst i oppgavepanelet Egenskapsark.
-
Skriv inn navnet på makroen du opprettet i trinn 2 (i dette eksemplet "mcrAddShortcutMenu") i kategorien Annet på egenskapsarket i egenskapsboksen for snarveimenylinje ) .
-
Legg til menyen som en global snarveimeny
Denne prosedyren erstatter alle standard snarveimenyer i gjeldende database. Egendefinerte snarveimenyer som du har knyttet til bestemte skjemaer, rapporter eller kontroller, påvirkes ikke.
-
Klikk på Microsoft Office-knappen og klikk deretter på Tilgangsalternativer .
-
I dialogboksen Tilgangsalternativer klikker du på Gjeldende database .
-
Skriv inn navnet på makroen du opprettet i trinn 2 (i dette eksemplet "mcrAddShortcutMenu") under Alternativer for bånd og verktøylinje i boksen Snarveimenylinje .
-
Egendefinerte snarveimenyer erstatter standard snarveimenyer for objektene de er knyttet til. Hvis du vil beholde visse Access-kommandoer for bruk på disse menyene, bruk RunCommand- handlingen for å legge kommandoene inn i makrogruppene for menyene du vil ha dem i.
-
En egendefinert snarveimeny som er knyttet til en kontroll erstatter alle andre egendefinerte snarveimenyer som er definert i databasen. En egendefinert snarveimeny som er knyttet til et skjema eller rapport erstatter en egendefinert global snarveimeny.
-
Når du angir en menymakro for et skjema eller en rapport eller for databasen, kjører Access denne menymakroen hver gang skjemaet, rapporten eller databasen åpnes. Hvis du gjør endringer i menymakroen eller makrogruppen som definerer kommandoene mens skjemaet, rapporten eller databasen er åpen, må du lukke skjemaet, rapporten eller databasen og åpne den på nytt for å se endringene.
-
For å opprette en undermeny, følg trinn 1 for å lage en egen makrogruppe som bare inneholder undermenykommandoene. Følg deretter trinn 1 igjen for å definere kommandoene for menyen på høyere nivå. Legg til undermenyen som et element i makrogruppen på høyere nivå ved å bruke makrohandlingen Legg til meny . Følgende illustrasjon viser makrogruppen for en meny som inneholder en undermeny, og viser deretter den resulterende snarveimenyen. Den tredje linjen i makrogruppen oppretter undermenyen Eksporter til... ( mcrSubMenu ).
Du kan opprette flere nivåer av undermenyer ved å bruke AddMenu- handlinger i makrogruppene for hvert menynivå. Sørg for å angi en verdi for menynavn- argumentet for hver AddMenu- handling, ellers vil undermenyen vises som en tom linje i menyen på høyere nivå.
-
Makrobetingelser støttes kun i menymakroen på øverste nivå. Med andre ord kan du bruke en betingelse i en menymakro for å bestemme om en bestemt meny eller snarveimeny skal vises, men bare for menyene på toppnivået. Du kan ikke bruke betingelser for å vise eller skjule kommandoer eller undermenyer på menyene. Du kan også bruke en betingelse for å skjule eller vise en egendefinert snarveimeny eller global snarveimeny.
-
Valgfritt kan menymakroen du oppretter i trinn 2, være en del av en makrogruppe. Hvis du for eksempel har flere snarveimenyer for forskjellige objekter eller kontroller, kan du lage et enkelt makroobjekt som inneholder alle nødvendige menymakroer. Sørg for å vise kolonnen Makronavn og skriv inn et unikt navn for hver makro. I trinn 3 bruker du følgende notasjon for å referere til makroen: makrogruppenavn.makronavn . For eksempel, mcrAddShortcutMenus.AddMenu2 .