Excel-bandet kan modifieras för att passa ett visst jobb. Denna övning skapar nya menyer som pekar användarna på specifika ark som är relevanta för deras uppgift.
I den här artikeln kommer vi att presentera hur du skapar anpassade menyer i ditt Excel-kalkylblad, så här:
Den här artikeln förutsätter att läsaren har utvecklarbandet och är bekant med VBA Editor. Om inte, vänligen Google "Excel-fliken för utvecklare" eller "Excel-kodfönstret".
Arbetsbok
Arbetsboken som ska användas har ett antal ark. Vi föreslår att du använder exemplet som finns här. Det ser ut så här.
De fyra första arken är dysfunktionella och används endast i denna övning för navigationsändamål.
Det femte arket innehåller den anpassade menystrukturen som är speciell för denna arbetsbok. För närvarande ska den vara tom förutom en testknapp.
Lägg till menystrukturen
Kopiera följande textblock till cell A1 på arket "MenuSheet".
Nivå, bildtext, position / makro, avdelare
1, & Användarverktyg, 10
2, Visa Dashboard, SelectDashboard
2, Lägg till nytt,, SANT
3, klient, SelectClient
3, Plats, SelectLocation
3, Manager, SelectManager
2, Stäng, CloseFile
Formatera menystrukturen
Denna CSV-data hamnar i kolumn A. För att formatera den till enskilda Excel-celler, välj kolumn A och använd "Text till kolumner" i Dataflik. Avgränsaren skulle vara "komma".
Ovanstående, när vi har lagt till lämplig kod, ger oss den nivåbaserade menystrukturen till vänster.
Den första nivån i denna övning är godtyckligrarplaceras som det tionde objektet i menyraden, som du ser när arbetsboken visas i full bredd.
Skapa och förstöra menyer
Eftersom vi bara vill ha de nya menyerna för den här specifika arbetsboken kommer vi att skapa och förstöra dem när du öppnar och stänger arbetsboken.
Koden nedan är somtart. Den utlöses när arbetsboken öppnas eller stängs. Kopiera den till en modul i din arbetsbok
Tilldela testknappen på MenuSheet till Auto_Open.
Alternativ Explicit Sub auto_Open () Ring Radera Meny Samtal Skapa Meny Avsluta Sub Sub auto_Close () Ring Radera Meny Avsluta Sub
Nedan undersöker vi vår menystruktur närmare.
Inget makro utlöses av Lägg till en ny eftersom den inte har någon annan funktion än som förälder till undermenyer.
Denna typ av menystruktur är lätt att underhålla. Lägg bara till nya objekt med sina makron, var medveten om menynivån.
Koden
Lägg till följande VBA-kod i modulen. Detta kommer att undersöka "MenuSheet" och skapa den anpassade menyn.
Under CreateMenu () 'kallas från Auto_Open. 'OBS: Det finns inget felhantering i denna underrutin Dimmenyblad som kalkylblad Dimmeny Objekt som CommandBarPopup DimmenyItem som objekt DimmenyMenyItem som CommandBarButton Dim sRow Som Integer ") Ring DeleteMenu sRow = 2tart rad 'Lägg till menyer med hjälp av strukturen enligt MenuSheet Range ("A" & sRow). Välj Do While ActiveCell> ""' **************** With MenuSheet MenuLevel =. Celler (sRow, 1) Caption = .Cells (sRow, 2) PositionOrMacro = .Cells (sRow, 3) Divider = .Cells (sRow, 4) NextLevel = .Cells (sRow + 1, 1) End with Select Case MenuLevel Case 1 'Lägg till toppmenyn i arbetsbladets kommandofält Set MenuObject = Application.CommandBars (1). _ Controls.Add (Type: = msoControlPopup, _ Before: = PositionOrMacro, _ Temporary: = True) MenuObject.Caption = Caption Case 2 'A Menu Item If NextLevel = 3 Ställ sedan MenuItem = MenuObject.Controls.Add (Type: = msoControlPopup) Annan Set MenuItem = MenuObject.Controls.Add (Type: = msoControlButton) MenuItem.OnAction = PositionOrMacro Avsluta Om MenuItem.Caption = Bildtext Om Divider Då MenuItem.BeginGroup = True Case 3 'A SubMenu Item Set SubMenuItem = MenuItem.Controls.Add (Type: = msoControlButton) SubMenuItem.Comment. Om Divider Then SubMenuItem.BeginGroup = True End Välj sRow = sRow + 1 Range ("A" & sRow). Välj '************************* *************** Loop Sheets ("Dashboard"). Aktivera End Sub Sub DeleteMenu () 'Denna sub kommer att köras när arbetsboken är stänga Dim menyblad som kalkylblad Dim sRow som heltal Dim Caption som sträng vid fel Återuppta Nästa Set MenuSheet = ThisWorkbook.Sheets ("MenuSheet") sRow = 2 Range ("A" & sRow). Välj Do While ActiveCell> "" If MenuSheet. Celler (sRow, 1) = 1 Sedan Bildtext = MenuSheet.Cells (sRow, 2) Application.CommandBars (1) .Controls (Caption). Radera Slut Om sRow = sRow + 1 Range ("A" & sRow). Välj Loop Vid fel GoTo 0 Avsluta Sub Sub SelectDashboard () Sheets ("Dashboard"). Aktivera End Sub Sub SelectClient () Sheets ("Client") Aktivera End Sub Sub SelectLocation () Sheets ("Location") Aktivera End Sub Sub SelectManager () Sheets ("Manager"). Aktivera End Sub Sub CloseFile () MsgBox "Close! (skriv din egen kod i modulen) "End Sub
Testa koden med testknappen. Den nyskapade användarmenyn finns på menyposition 10, under tillägg.
Excel-återställning
Excel är ibland instabil och kraschar när den är öppen och skadar källfilen. Om det inte går att återställa filen är det bra att ha ett verktyg att reparera Excel-skador i annat fall kommer allt icke-säkerhetskopierat arbete att vara lost.
Författarintroduktion:
Felix Hooker är en dataåterställningsexpert i DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive reparation rar och mjukvaruprodukter för SQL-återställning. För mer information besök www.datanumen.com