Før Excel 2007 VBA programmerere brukt CommandBar objektet vil lage egne menyer og verktøylinjer, og tilpasset snarvei (høyreklikk) menyer. Fra og med Excel 2007, er CommandBar objekt i en heller merkelig posisjon. Hvis du skriver kode for å tilpasse en meny eller en verktøylinje, Excel avskjærer at kode og ignorerer mange av dine kommandoer.
I stedet for å vise din godt gjennomtenkt grensesnitt ekstrautstyr, Excel 2007 (som senere versjoner) rett og slett dumper tilpassede menyer og verktøylinjer i en catch-all Ribbon tab heter Add-Ins
Meny og verktøylinje tilpasninger havner i Add-Ins &rarr.; Menykommandoer eller Add-Ins → Custom Verktøylinjer gruppe. Men tilpasse hurtigmenyer (som også tar med CommandBar objekt) fortsatt fungerer som det alltid har -. Vel, liksom
Ergo? Den CommandBar objektet er ikke veldig nyttig lenger, men det er fortsatt den eneste måten å tilpasse hurtigmenyer.
Legge til et nytt element til Cell hurtigmenyen
Nedenfor finner du eksempelkode som legger et nytt element i hurtigmenyen som vises når du høyreklikker på en celle. Du bør være i stand til å tilpasse seg disse eksemplene dine behov.
Du kan forbedre at Endre bokstav verktøyet litt ved å gjøre det tilgjengelig fra Cellehurtigmenyen.
AddToShortcut prosedyren gir en ny menyvalget til Cell hurtigmenyen. Du kan tilpasse den til å peke på dine egne makroer ved å endre Caption og VedHandling egenskaper av objektet heter NewControl.
Sub AddToShortCut () Dim Bar As CommandBar Dim NewControl Som CommandBarButton DeleteFromShortcut Set bar = Application.CommandBars ("Cell") Still NewControl = Bar.Controls.Add _ (Type: = msoControlButton, ID: = 1, _ midlertidig: = True) Med NewControl .Caption = "& Endre bokstav" .OnAction = "ChangeCase" .Style = msoButtonIconAndCaption End WithEnd SubWhen du endre en hurtigmeny, som modifikasjon gjelder til du starter Excel. Med andre ord, har modifiserte hurtigmenyer ikke nullstille seg når du lukker arbeidsboken som inneholder VBA-kode. Derfor, hvis du skrive kode for å endre en hurtigmeny, du nesten alltid skrive kode for å reversere effekten av din modifikasjon
DeleteFromShortcut prosedyre fjerner den nye menypunktet fra Cellehurtigmenyen.
Sub DeleteFromShortcut () On Error Resume Next Application.CommandBars ("Cell") Controls _ ("& Change Case"). DeleteEnd Sub
Dette viser hvordan det nye menypunktet vises når du høyreklikker på en celle
.. The Cell hurtigmenyen som viser en tilpasset menyelement. Endre bokstav
Den første faktiske kommandoen etter erklæringen av et par variabler kaller DeleteFromShortcut prosedyren. Denne uttalelsen sikrer at bare én Endre bokstavmenyelementet vises på hurtig Cell menyen. Prøv å kommentere ut den linjen (sette en apostrof på begynnelsen av linjen) og kjører prosedyren et par ganger - men ikke bli båret bort
Høyreklikk på en celle, og du kan se flere forekomster av menyvalget Endre bokstav. Bli kvitt alle oppføringene ved å kjøre DeleteFromShortcut flere ganger (en gang for hver ekstra element menyen).
Til slutt, trenger du en måte å legge snarvei menyvalget når arbeidsboken åpnes og slette menyvalget når arbeidsboken er lukket. Å gjøre dette er enkelt. Bare legg disse to hendelsesprosedyrer til Thisworkbook koden modulen:
Private Sub Workbook_Open () Call AddToShortCutEnd SubPrivate Sub Workbook_BeforeClose (Cancel As Boolean) Ring DeleteFromShortcutEnd Sub
Workbook_Open prosedyren utføres når arbeidsboken åpnes, og Workbook_BeforeClose prosedyren er utført før arbeidsboken er lukket. Akkurat hva legen bestilt.
Hva er annerledes i Excel 2013 og Excel 2016?
Hvis du har brukt VBA til å jobbe med hurtigmenyer i Excel 2007 eller tidligere, må du være klar over en vesentlig endring.
I det siste, hvis koden modifisert en hurtigmeny, som modifikasjon var i kraft for alle arbeidsbøker. For eksempel, hvis du har lagt til et nytt element til Cell høyreklikkmenyen, som nytt element vil vises når du høyreklikker på en celle i noen
arbeidsbok (pluss andre arbeidsbøker som du åpner senere). Med andre ord, ble gjort modifikasjoner snarvei-menyen på applikasjon
nivå.
Excel 2013 og Excel 2016 bruk et enkelt dokument grensesnitt, og som rammer hurtigmenyer. Endringer du gjør i hurtigmenyer påvirker bare den aktive arbeidsboken vinduet. Når du utføre koden som endrer hurtigmenyen, vil hurtigmenyen for andre enn det aktive vinduet windows ikke endres. Dette er en radikal avgang fra hvordan ting pleide å jobbe
annen vri:. Hvis brukeren åpner en arbeidsbok (eller oppretter en ny arbeidsbok) når det aktive vinduet viser den modifiserte hurtigmenyen, den nye arbeidsboken viser også den modifiserte hurtigmenyen . Med andre ord, nye vinduer viser de samme hurtigmenyer som vinduet som var aktive når de nye vinduene ble åpnet
Ergo:. I det siste, hvis du har åpnet en arbeidsbok eller tillegg som modifiserte hurtigmenyer , kan du være trygg på at de modifiserte hurtigmenyer vil være tilgjengelig i alle arbeidsbøker. Du trenger ikke lenger at trygghet. Anmeldelser