Kako stvoriti prilagođene izbornike u radnom listu programa Excel putem VBA

Podijeli sada:

Vrpca programa Excel može se modificirati kako bi odgovarala određenom poslu. Ova vježba stvara nove izbornike koji usmjeravaju korisnike na određene listove relevantne za njihov zadatak.

U ovom ćemo članku predstaviti kako izraditi prilagođene izbornike u svom Excel radnom listu, poput ovog:Stvorite prilagođene izbornike u svom Excel radnom listu

Ovaj članak pretpostavlja da čitatelj ima prikazanu vrpcu za razvojne programere i da je upoznat s VBA uređivačem. Ako ne, molimo proguglajte “Excel Developer Tab” ili “Excel Code Window”.

Radna bilježnica

Radna bilježnica koja će se koristiti ima nekoliko listova. Predlažemo da upotrijebite primjer koji se nalazi ovdje. Ovako izgleda.Uzorak radne bilježnice

Prva četiri lista su nefunkcionalna i koriste se u ovoj vježbi samo u svrhu navigacije.

Peti list sadrži prilagođenu strukturu izbornika posebno za ovu radnu knjigu. Trenutačno bi trebao biti prazan osim gumba Test.

Dodajte strukturu izbornika

Kopirajte sljedeći blok teksta u ćeliju A1 lista "MenuSheet".

Razina, naslov, položaj/makro, razdjelnik

1,&Korisnički alati,10

2, Prikaži nadzornu ploču, odaberite Nadzornu ploču

2,Dodaj novo, ,ISTINA

3,Klijent,OdaberiKlijenta

3, Lokacija, Odaberite lokaciju

3,Manager,SelectManager

2, Zatvori, Zatvori datoteku

Formatirajte strukturu izbornika

Ovi CSV podaci završavaju u stupcu A. Da biste ih formatirali u pojedinačne Excel ćelije, odaberite stupac A i koristite 'Tekst u stupce' u Kartica Podaci. Razdjelnik bi bio "zarez".Formatirajte ga u pojedinačne Excel ćelije

Gore navedeno, nakon što smo dodali odgovarajući kod, dat će nam strukturu izbornika koja se temelji na razini s lijeve strane.Struktura izbornika temeljena na razinama

Prva razina, u ovoj vježbi, proizvoljno je postavljena kao deseta stavka na traci izbornika, kao što ćete vidjeti kada se prikaže puna širina radne knjige.

Stvaranje i uništavanje izbornika

Budući da želimo samo nove izbornike za ovu radnu knjigu, stvorit ćemo ih i uništiti prilikom otvaranja i zatvaranja radne knjige.

Donji kod je početak. Pokrenut će se kada se radna knjiga otvori ili zatvori. Kopirajte ga u modul u svojoj radnoj knjizi.

Dodijelite Test gumb na MenuSheet za Auto_Open.

Option Explicit

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

U nastavku pobliže ispitujemo našu strukturu izbornika.Pomnije proučite našu strukturu jelovnika

Nije pokrenut nijedan makro Dodaj novi jer nema nikakvu drugu funkciju osim kao roditelj podizbornika.

Ovakvu strukturu izbornika lako je održavati. Jednostavno dodajte nove stavke s njihovim makronaredbama, pazeći na razinu izbornika.

Kodeks

Dodajte sljedeći VBA kod modulu. Ovo će ispitati "MenuSheet" i stvoriti prilagođeni izbornik.

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

Testirajte kod pomoću gumba Test. Novokreirani korisnički izbornik nalazi se na poziciji izbornika 10, pod Dodaci.

Excel oporavak

Excel je ponekad nestabilan i ruši se dok je otvoren, oštećujući izvornu datoteku. Ako ne uspije vratiti datoteku, korisno je imati alat za popravak Excel šteta u suprotnom će se izgubiti sav rad bez sigurnosne kopije.

Uvod za autora:

Felix Hooker je stručnjak za oporavak podataka u DataNumen, Inc., koji je svjetski lider u tehnologijama za oporavak podataka, uključujući popravak rar-a i softverski proizvodi za oporavak sql-a. Za više informacija posjetite www.datanumen.com

Podijeli sada:

Komentari su zatvoreni.