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:
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.
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".
Gore navedeno, nakon što smo dodali odgovarajući kod, dat će nam strukturu izbornika koja se temelji na razini s lijeve strane.
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.
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



