Excel traka se može modificirati tako da odgovara određenom poslu. Ova vježba kreira nove menije koji upućuju korisnike na određene listove relevantne za njihov zadatak.
U ovom članku ćemo vam predstaviti kako da kreirate prilagođene menije u vašem Excel radnom listu, ovako:
Ovaj članak pretpostavlja da čitač ima prikazanu traku programera i da je upoznat sa VBA Editorom. Ako ne, molimo Google "Excel Developer Tab" ili "Excel Code Window".
Radna sveska
Radna sveska koja se koristi ima nekoliko listova. Predlažemo da koristite uzorak koji se nalazi ovdje. To izgleda ovako.
Prva četiri lista su nefunkcionalna i koriste se u ovoj vježbi samo u svrhu navigacije.
Peti list će sadržavati prilagođenu strukturu menija specifičnu za ovu radnu svesku. Trenutno bi trebao biti prazan osim dugmeta Test.
Dodajte strukturu menija
Kopirajte sljedeći blok teksta u ćeliju A1 lista “MenuSheet”.
Nivo, natpis, pozicija/makro, razdjelnik
1,&Korisnički alati,10
2,Prikaži kontrolnu tablu,Odaberi kontrolnu tablu
2,Dodaj novo, ,TAČNO
3,Klijent,OdaberiKlijenta
3,Lokacija,Odaberi lokaciju
3, Menadžer, Odaberite Menadžer
2,Zatvori,Zatvori datoteku
Formatirajte strukturu menija
Ovi CSV podaci završavaju u koloni A. Da biste ih formatirali u pojedinačne Excel ćelije, odaberite kolonu A i koristite 'Tekst u kolone' u Kartica Podaci. Razdjelnik bi bio “zarez”.
Gore navedeno, nakon što smo dodali odgovarajući kod, daće nam strukturu menija zasnovanu na nivou sa leve strane.
Prvi nivo, u ovoj vježbi, proizvoljno je postavljen kao deseta stavka na traci menija, kao što ćete vidjeti kada se prikaže puna širina radne knjige.
Kreiranje i uništavanje menija
Pošto želimo samo nove menije za ovu konkretnu radnu svesku, kreiraćemo ih i uništiti prilikom otvaranja i zatvaranja radne sveske.
Donji kod je početak. Pokrenut će se kada se radna sveska otvori ili zatvori. Kopirajte ga u modul u vašoj radnoj svesci.
Dodijelite tipku Test na MenuSheet-u Auto_Open.
Option Explicit Sub auto_Open() Call DeleteMenu Call CreateMenu End Sub Sub auto_Close() Call DeleteMenu End Sub
U nastavku ćemo detaljnije ispitati strukturu našeg menija.
Nijedan makro se ne pokreće Dodaj novi jer nema nikakvu drugu funkciju osim kao roditelj podmenija.
Ovakva struktura menija je jednostavna za održavanje. Jednostavno dodajte nove stavke sa njihovim makroima, vodeći računa o nivou menija.
Kodeks
Dodajte sljedeći VBA kod u modul. Ovo će ispitati "MenuSheet" i kreirati prilagođeni meni.
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 dugmeta Test. Novokreirani korisnički meni će se naći na poziciji menija 10, pod dodacima.
Excel Recovery
Excel je s vremena na vrijeme nestabilan i ruši se dok je otvoren, oštećujući izvornu datoteku. Tamo gdje ne uspije oporaviti datoteku, korisno je imati alat za popravku Excel šteta u suprotnom će sav rad bez sigurnosne kopije biti izgubljen.
Uvod za autora:
Felix Hooker je stručnjak za oporavak podataka DataNumen, Inc., koji je svjetski lider u tehnologijama za oporavak podataka, uključujući popravak rar-a i sql softverski proizvodi za oporavak. Za više informacija posjetite www.datanumen.com



