Kako ustvariti prilagojene menije v Excelovem delovnem listu prek VBA

Skupna raba zdaj:

Excelov trak lahko prilagodite določenemu delu. Ta vaja ustvarja nove menije, ki uporabnike usmerjajo na posebne liste, ki ustrezajo njihovi nalogi.

V tem članku bomo predstavili, kako ustvarite prilagojene menije na svojem Excelovem delovnem listu, kot je ta:Ustvarite prilagojene menije v Excelovem delovnem listu

Ta članek predvideva, da ima bralec prikazan trak za razvijalce in da pozna urejevalnik VBA. V nasprotnem primeru prosimo za Google »Excel Developer Tab« ali »Excel Code Window«.

Delovni zvezek

Delovni zvezek, ki ga bomo uporabili, ima več listov. Predlagamo, da uporabite vzorec, ki ga najdete tukaj. Izgleda takole.Vzorčni delovni zvezek

Prvi štirje listi so disfunkcionalni in se pri tej vaji uporabljajo samo za namene navigacije.

Peti list vsebuje prilagojeno strukturo menija, posebno za ta delovni zvezek. Trenutno mora biti prazno, razen gumba za preskus.

Dodajte strukturo menija

Kopirajte naslednji blok besedila v celico A1 lista “MenuSheet”.

Raven, napis, položaj / makro, delilnik

1, & Uporabniška orodja, 10

2, Pokaži nadzorno ploščo, izberite Nadzorna plošča

2, Dodaj novo,, TRUE

3, odjemalec, SelectClient

3, Location, SelectLocation

3, Manager, SelectManager

2, Zapri, Zapri datoteko

Oblikujte strukturo menija

Ti podatki CSV končajo v stolpcu A. Če jih želite formatirati v posamezne celice Excel, izberite stolpec A in z uporabo 'Besedilo v stolpce' v Zavihek Podatki. Ločilo bi bilo "vejica".Formatirajte v posamezne celice Excel

Zgoraj, ko bomo dodali ustrezno kodo, bomo dobili levo na osnovi ravni menijev.Struktura menija na ravni

Prva raven je v tej vaji poljubno postavljena kot deseti element v menijski vrstici, kot boste videli, ko je prikazana celotna širina delovnega zvezka.

Ustvarjanje in uničenje jedilnikov

Ker želimo samo nove menije za ta delovni zvezek, jih bomo ustvarili in uničili ob odpiranju in zapiranju delovnega zvezka.

Spodnja koda je začetek. Sprožila se bo, ko bo delovni zvezek odprt ali zaprt. Kopirajte jo v modul v delovnem zvezku.

Gumb Test v meniju Sheet dodelite Auto_Open.

Option Explicit

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

Spodaj podrobneje preučimo strukturo jedilnika.Podrobneje preučite strukturo našega menija

Noben makro ne sproži Dodaj novo ker nima druge funkcije kot nadrejeni podmeniji.

Tovrstno strukturo menijev je enostavno vzdrževati. Preprosto dodajte nove elemente z njihovimi makri, saj se zavedate ravni menija.

Kodeks

Modulu dodajte naslednjo kodo VBA. To bo preučilo "MenuSheet" in ustvarilo meni po meri.

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

Preizkusite kodo s tipko Test. Novo ustvarjeni uporabniški meni se nahaja na mestu menija 10, pod Dodatki.

Obnovitev programa Excel

Excel je včasih nestabilen in se zruši, ko je odprt, kar poškoduje izvorno datoteko. Če datoteke ne uspe obnoviti, je koristno imeti orodje za popravilo Škoda v Excelu sicer bo vse nevarnostno kopirano delo izgubljeno.

Uvod avtorja:

Felix Hooker je strokovnjak za obnovitev podatkov v DataNumen, Inc., ki je vodilna na svetu na področju tehnologij za obnovitev podatkov, vključno z popravilo rar-ja in sql programske izdelke za obnovitev. Za več informacij obiščite www.datanumen.com

Skupna raba zdaj:

Komentarji so zaprti.