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:
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.
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".
Zgoraj, ko bomo dodali ustrezno kodo, bomo dobili levo na osnovi ravni menijev.
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.
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



