Ako vytvárať prispôsobené ponuky v pracovnom hárku programu Excel pomocou VBA

Pásku Excel je možné upraviť tak, aby vyhovovala konkrétnej práci. Toto cvičenie vytvára nové ponuky, ktoré nasmerujú používateľov na konkrétne hárky relevantné pre ich úlohu.

V tomto článku si predstavíme, ako vytvoriť prispôsobené ponuky v pracovnom hárku programu Excel, napríklad takto:Vytvorte prispôsobené ponuky v pracovnom hárku programu Excel

Tento článok predpokladá, že čitateľ má zobrazenú pásku pre vývojárov a je oboznámený s editorom VBA. Ak nie, navštívte Google kartu „Vývojár Excel“ alebo „Okno kódu Excel“.

Cvičebnica

Zošit, ktorý sa má použiť, má niekoľko hárkov. Odporúčame vám použiť ukážku tu. Vyzerá to takto.Ukážkový zošit

Prvé štyri listy sú nefunkčné a používajú sa v tomto cvičení iba na navigačné účely.

Piaty hárok obsahuje prispôsobenú štruktúru ponuky konkrétnu pre tento zošit. V súčasnosti by malo byť prázdne, okrem tlačidla Test.

Pridajte štruktúru ponuky

Nasledujúci blok textu skopírujte do bunky A1 listu „MenuSheet“.

Úroveň, Titulky, Pozícia / Makro, Oddeľovač

1, & Používateľské nástroje, 10

2, Zobraziť hlavný panel, Vybrať hlavný panel

2, Pridať nové,, PRAVDA

3, klient, SelectClient

3, Location, SelectLocation

3, Správca, SelectManager

2, Zavrieť, ZavrieťSúbor

Naformátujte štruktúru ponuky

Tieto údaje CSV končia v stĺpci A. Ak ich chcete formátovať do jednotlivých buniek programu Excel, vyberte stĺpec A a použite „Text do stĺpcov“ v Karta Údaje. Oddeľovač by bol „čiarka“.Naformátujte ho do jednotlivých buniek programu Excel

Vyššie uvedené, akonáhle sme pridali vhodný kód, poskytne nám štruktúru ponuky na ľavej strane.Štruktúra ponuky na úrovni

Prvá úroveň v tomto cvičení je arbitrážnararily umiestnené ako desiata položka na paneli s ponukami, ako uvidíte, keď sa zobrazí celá šírka zošita.

Vytváranie a ničenie ponúk

Pretože chceme iba nové ponuky pre tento konkrétny zošit, pri otvorení a zatvorení zošita ich vytvoríme a zničíme.

Kód nižšie je akotart. Spustí sa pri otvorení alebo zatvorení zošita. Skopírujte ho do modulu v zošite

Priraďte tlačidlo Test v ponuke MenuSheet k Auto_Open.

Možnosť Explicit Sub Auto_Open () Volať DeleteMenu Volať CreateMenu Koniec Sub Sub auto_Close () Volať DeleteMenu End Sub

Ďalej podrobnejšie preskúmame našu štruktúru ponuky.Preskúmajte podrobnejšie našu štruktúru ponuky

Žiadne makro sa nespustí pomocou Pridať nové pretože nemá inú funkciu ako podradené podponuky.

Tento druh štruktúry menu sa ľahko udržuje. Jednoducho pridávajte nové položky s ich makrami, pri vedomí úrovne ponuky.

Kódex

Pripojte k modulu nasledujúci kód VBA. Týmto sa preskúma „MenuSheet“ a vytvorí sa prispôsobené menu.

Sub CreateMenu () 'Volá sa z Auto_Open. „POZNÁMKA: V tomto podprograme nie je žiadna chyba spracovania. Dim MenuSheet ako pracovný list Dim MenuObject ako CommandBarPopup Dim MenuItem ako objekt Dim SubMenuItem ako CommandBarButton Dim sRow ako celé číslo Dim MenuLevel, NextLevel, PositionOrMacro, titulok, rozdeľovač Nastaviť MenuSheet = ThisWorkbook.Sheets (" MenuSheet) ") Volajte DeleteMenu sRow = 2tarriadok 'Pridať ponuky pomocou štruktúry podľa rozsahu MenuSheet ("A" & sRow). Vyberte Vykonať počas ActiveCell> ""' ***************** S MenuSheet MenuLevel =. Bunky (sRow, 1) Titulok = .Cells (sRow, 2) PositionOrMacro = .Cells (sRow, 3) Oddeľovač = .Cells (sRow, 4) NextLevel = .Cells (sRow + 1, 1) Koniec s výberom prípadu MenuVeľkosť prípadu 1 'Pridajte najvyššiu ponuku do pracovného hárka CommandBar Set MenuObject = Application.CommandBars (1). _ Controls.Add (Type: = msoControlPopup, _ Before: = PositionOrMacro, _ Temporary: = True) MenuObject.Caption = Prípad titulku 2 'Položka ponuky, ak je NextLevel = 3 Potom nastavte MenuItem = MenuObject.Controls.Add (Type: = msoControlPopup) Else Set MenuItem = MenuObject.Controls.Add (Type: = msoControlButton) MenuItem.OnAction = PositionOrMacro Koniec, ak MenuItem.Caption = Titulok, ak je rozdeľovač, potom MenuItem.BeginGroup = Skutočný prípad 3 'Sada položiek podponuky SubMenuItem = MenuItem.Controls.Add (Typ: = msoControlButton) SubMenuItem.Caption = Titul SubMenuItem.OnAction = Poloha If Divider Then SubMenuItem.BeginGroup = True End Select sRow = sRow + 1 Range ("A" & sRow). Vyberte '************************* *************** Loop Sheets ("Dashboard"). Activate End Sub Sub DeleteMenu () 'Tento sub bude vykonaný, keď je zošit zatváranie Dim MenuSheet ako pracovný list Dim sRow ako celé číslo Dim Caption ako reťazec pri chybe Pokračovať ďalej Nastaviť MenuSheet = ThisWorkbook.Sheets ("MenuSheet") sRow = 2 Range ("A" & sRow) .Vyberte Vykonať pri ActiveCell> "" Ak je MenuSheet. Bunky (sRow, 1) = 1 Potom titulok = MenuSheet.Cells (sRow, 2) Application.CommandBars (1). Kontroly (titulok). Odstrániť koniec, ak je rozsah sRow = sRow + 1 ("A" & sRow). Vyberte slučku Pri chybe GoTo 0 Tabuľky End Sub Sub SelectDashboard () ("Dashboard"). Aktivujte tabuľky End Sub Sub SelectClient () ("Klient"). Aktivujte tabuľky End Sub Sub SelectLocation () ("Umiestnenie"). Aktivujte koncový sub Sub SelectManager () Tabuľky („Správca“). Aktivovať End Sub Sub CloseFile () MsgBox „Zavrieť! (do modulu napíš svoj vlastný kód) „End Sub

Testujte kód pomocou tlačidla Test. Novo vytvorené užívateľské menu nájdete na pozícii 10 ponuky v časti Doplnky.

Obnova programu Excel

Excel je občas nestabilný a pri otvorení zlyhá, čím sa poškodí zdrojový súbor. Ak sa súbor nepodarí obnoviť, je užitočné mať k dispozícii nástroj na opravu Excel poškodenie inak všetka nezálohovaná práca bude lost.

Úvod autora:

Felix Hooker je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane oprava rar a softvérové ​​produkty na obnovenie sql. Pre viac informácií navštívte www.datanumen. S

Nechaj odpoveď

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *