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

Zdieľať teraz:

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ň je v tomto cvičení ľubovoľne umiestnená ako desiata položka na paneli s ponukami, ako uvidíte pri zobrazení celej šírky 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.

Nižšie uvedený kód je začiatok. Spustí sa pri otvorení alebo zatvorení zošita. Skopírujte ho do modulu vo vašom zošite.

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

Option Explicit

Sub auto_Open()
    Call DeleteMenu
    Call CreateMenu
 End Sub
 
Sub auto_Close()
    Call 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()
'   Called from Auto_Open. 'NOTE: There is no error handling in this subroutine
    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.Sheets("MenuSheet")
    Call DeleteMenu

    sRow = 2 '   start row
    
'   Add menus using the structure as per the MenuSheet
    Range("A" & sRow).Select
    Do While ActiveCell > "" '****************
        With 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 MenuLevel
            Case 1 ' Add the top-level menu to the Worksheet CommandBar
                Set MenuObject = Application.CommandBars(1). _
                    Controls.Add(Type:=msoControlPopup, _
                    Before:=PositionOrMacro, _
                    Temporary:=True)
                MenuObject.Caption = Caption
            Case 2 ' A Menu Item
                If NextLevel = 3 Then
                    Set MenuItem = MenuObject.Controls.Add(Type:=msoControlPopup)
                Else
                    Set MenuItem = MenuObject.Controls.Add(Type:=msoControlButton)
                    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.Caption = Caption
                SubMenuItem.OnAction = PositionOrMacro
                
                If Divider Then SubMenuItem.BeginGroup = True
        End Select
        sRow = sRow + 1
        Range("A" & sRow).Select '***************************************
    Loop
    Sheets("Dashboard").Activate
End Sub

Sub DeleteMenu()
'   This sub will be executed when the workbook is closing
    Dim MenuSheet As Worksheet
    Dim sRow As Integer
    Dim Caption As String
    
    On Error Resume Next
    Set MenuSheet = ThisWorkbook.Sheets("MenuSheet")
    sRow = 2
    Range("A" & sRow).Select
    Do While ActiveCell > ""
        If MenuSheet.Cells(sRow, 1) = 1 Then
            Caption = MenuSheet.Cells(sRow, 2)
            Application.CommandBars(1).Controls(Caption).Delete
        End If
        sRow = sRow + 1
        Range("A" & sRow).Select
    Loop
   
    On Error GoTo 0
End Sub

Sub SelectDashboard()
    Sheets("Dashboard").Activate
End Sub
Sub SelectClient()
    Sheets("Client").Activate
End Sub

Sub SelectLocation()
    Sheets("Location").Activate
End Sub

Sub SelectManager()
    Sheets("Manager").Activate
End Sub

Sub CloseFile()
    MsgBox "Close! (write your own code in the module)"
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 sa všetka nezálohovaná práca stratí.

Ú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 súboru rar a softvérové ​​produkty na obnovenie sql. Pre viac informácií navštívte www.datanumen. S

Zdieľať teraz:

Komentáre sú uzavreté.