Hvordan lage tilpassede menyer i Excel-regnearket via VBA

Excel-båndet kan endres for å passe til en bestemt jobb. Denne øvelsen lager nye menyer som peker brukere til spesifikke ark som er relevante for oppgaven deres.

I denne artikkelen vil vi introdusere hvordan du lager tilpassede menyer i Excel-regnearket ditt, slik:Lag tilpassede menyer i Excel-regnearket

Denne artikkelen forutsetter at leseren har utviklerbåndet vist og er kjent med VBA Editor. Hvis ikke, vennligst Google "Excel Developer Tab" eller "Excel Code Window".

Arbeidsbok

Arbeidsboken som skal brukes har en rekke ark. Vi foreslår at du bruker prøven du finner her. Det ser slik ut.Eksempel på arbeidsbok

De fire første arkene er dysfunksjonelle, og brukes i denne øvelsen kun for navigasjonsformål.

Det femte arket vil inneholde den tilpassede menystrukturen som er spesielt for denne arbeidsboken. For øyeblikket skal den være tom bortsett fra en testknapp.

Legg til menystrukturen

Kopier følgende tekstblokk inn i celle A1 på arket "Menyark".

Nivå, bildetekst, posisjon/makro, skillelinje

1,&Brukerverktøy,10

2,Vis Dashboard,Velg Dashboard

2,Legg til ny, ,TRUE

3,klient,velg klient

3,Plassering,VelgPlassering

3,Manager,SelectManager

2, Lukk, Lukk fil

Formater menystrukturen

Disse CSV-dataene havner i kolonne A. For å formatere dem til individuelle Excel-celler, velg kolonne A og bruk "Tekst til kolonner" i Datafanen. Avgrensningstegnet vil være "komma".Formater den til individuelle Excel-celler

Ovennevnte, når vi har lagt til den riktige koden, vil gi oss den nivåbaserte menystrukturen til venstre.Den nivåbaserte menystrukturen

Det første nivået i denne øvelsen er arbitrarplassert som det tiende elementet på menylinjen, som du vil se når hele bredden av arbeidsboken vises.

Opprette og ødelegge menyer

Siden vi bare vil ha de nye menyene for denne spesifikke arbeidsboken, vil vi opprette og ødelegge dem ved åpning og lukking av arbeidsboken.

Koden nedenfor er somtart. Den utløses når arbeidsboken åpnes eller lukkes. Kopier det inn i en modul i arbeidsboken din

Tilordne Test-knappen på menyark til Auto_Open.

Alternativ Eksplisitt Sub auto_Open() Call DeleteMenu Call CreateMenu End Sub Sub auto_Close() Call DeleteMenu End Sub

Nedenfor ser vi nærmere på vår menystruktur.Undersøk menystrukturen vår nærmere

Ingen makro utløses av Legg til ny fordi den ikke har noen annen funksjon enn som overordnet undermenyer.

Denne typen menystruktur er enkel å vedlikeholde. Bare legg til nye elementer med makroene deres, og vær bevisst på menynivået.

Koden

Legg til følgende VBA-kode til modulen. Dette vil undersøke "Menyarket" og lage den tilpassede menyen.

Sub CreateMenu() ' Kalt opp fra Auto_Open. 'MERK: Det er ingen feilhåndtering i denne underrutinen Dim MenuSheet As Worksheet Dim MenuObject As CommandBarPopup Dim MenuItem As Object Dim SubMenuItem As CommandBarButton Dim sRow As Integer Dim MenuLevel, NextLevel, PositionOrMacro, Caption, Divider Set MenuSheet = ThisWorkbook.MenuSheets(" ") Ring DeleteMenu sRow = 2 ' start row ' Legg til menyer ved å bruke strukturen i henhold til MenySheet Range("A" & sRow). Velg Gjør mens ActiveCell > "" '****************** Med MenuSheet MenuLevel = . Cells(sRow, 1) Caption = .Cells(sRow, 2) PositionOrMacro = .Cells(sRow, 3) Divider = .Cells(sRow, 4) NextLevel = .Cells(sRow + 1, 1) End With Select Case MenyLevel Case 1 ' Legg til toppnivåmenyen i regnearket CommandBar Set MenuObject = Application.CommandBars(1). _ Controls.Add(Type:=msoControlPopup, _ Før:=PosisjonEllerMakro, _ Temporary:=True) MenuObject.Caption = Caption Case 2 ' A Meny Item If NextLevel = 3 Then Set MenuItem = MenuObject.Controls.Add(Type:=msoControlPopup) Else Set MenuItem = MenuObject.Controls.Add(Type:=msoControl) MenuItem.OnAction = PositionOrMacro End If MenuItem.Caption = Caption If Divider Then MenuItem.BeginGroup = True Case 3 ' A SubMenu Item Set SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton) SubMenuItem.OnAMenuIt =Posisjon.Macro. If Divider Then SubMenuItem.BeginGroup = True End Velg sRow = sRow + 1 Range("A" & sRow).Velg '************************* *************** Loop Sheets("Dashboard").Aktiver End Sub Sub DeleteMenu() ' Denne sub vil bli utført når arbeidsboken lukkes Dim MenuSheet As Worksheet Dim sRow As Integer Dim Bildetekst som streng ved feil Fortsett neste sett Menyark = ThisWorkbook.Sheets("Menyark") sRow = 2 Range("A" & sRow). Velg Gjør mens ActiveCell > "" Hvis MenuSheet.Cells(sRow, 1) = 1 deretter bildetekst = Menyark.Cells(sRow, 2) Application.CommandBars(1).Controls(Caption).Delete End If sRow = sRow + 1 Range("A" & sRow).Velg Loop On Error GoTo 0 End Sub SelectDashboard() Sheets("Dashboard").Aktiver End Sub Sub SelectClient() Sheets("Client").Aktiver End Sub Sub SelectLocation() Sheets("Location").Aktiver End Sub Sub SelectManager() Sheets("Manager").Aktiver End Sub Sub CloseFile() MsgBox "Close! (skriv din egen kode i modulen)" End Sub

Test koden med Test-knappen. Den nyopprettede brukermenyen finner du på menyposisjon 10, under Tillegg.

Excel-gjenoppretting

Excel er til tider ustabil og krasjer mens den er åpen, og skader kildefilen. Der den ikke klarer å gjenopprette filen, er det nyttig å ha et verktøy for å reparere Excel skade ellers vil alt usikkerhetskopiert arbeid være lost.

Forfatterintroduksjon:

Felix Hooker er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert reparasjon rar og sql-programvareprodukter. For mer informasjon besøk www.datanumen. Med

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket *