Pásku Excel je možné upraviť tak, aby vyhovovala konkrétnej práci. Toto cvičenie vytvára nové ponuky, ktoré nasmerujú používateľov na konkrétne hárky relevantné pre ich úlohu.
V tomto článku si predstavíme, ako vytvoriť prispôsobené ponuky v pracovnom hárku programu Excel, napríklad takto:
Tento článok predpokladá, že čitateľ má zobrazenú pásku pre vývojárov a je oboznámený s editorom VBA. Ak nie, navštívte Google kartu „Vývojár Excel“ alebo „Okno kódu Excel“.
Cvičebnica
Zošit, ktorý sa má použiť, má niekoľko hárkov. Odporúčame vám použiť ukážku tu. Vyzerá to takto.
Prvé štyri listy sú nefunkčné a používajú sa v tomto cvičení iba na navigačné účely.
Piaty hárok obsahuje prispôsobenú štruktúru ponuky konkrétnu pre tento zošit. V súčasnosti by malo byť prázdne, okrem tlačidla Test.
Pridajte štruktúru ponuky
Nasledujúci blok textu skopírujte do bunky A1 listu „MenuSheet“.
Úroveň, Titulky, Pozícia / Makro, Oddeľovač
1, & Používateľské nástroje, 10
2, Zobraziť hlavný panel, Vybrať hlavný panel
2, Pridať nové,, PRAVDA
3, klient, SelectClient
3, Location, SelectLocation
3, Správca, SelectManager
2, Zavrieť, ZavrieťSúbor
Naformátujte štruktúru ponuky
Tieto údaje CSV končia v stĺpci A. Ak ich chcete formátovať do jednotlivých buniek programu Excel, vyberte stĺpec A a použite „Text do stĺpcov“ v Karta Údaje. Oddeľovač by bol „čiarka“.
Vyššie uvedené, akonáhle sme pridali vhodný kód, poskytne nám štruktúru ponuky na ľavej strane.
Prvá úroveň je v tomto cvičení ľubovoľne umiestnená ako desiata položka na paneli s ponukami, ako uvidíte pri zobrazení celej šírky zošita.
Vytváranie a ničenie ponúk
Pretože chceme iba nové ponuky pre tento konkrétny zošit, pri otvorení a zatvorení zošita ich vytvoríme a zničíme.
Nižšie uvedený kód je začiatok. Spustí sa pri otvorení alebo zatvorení zošita. Skopírujte ho do modulu vo vašom zošite.
Priraďte tlačidlo Test v ponuke MenuSheet k Auto_Open.
Option Explicit Sub auto_Open() Call DeleteMenu Call CreateMenu End Sub Sub auto_Close() Call DeleteMenu End Sub
Ďalej podrobnejšie preskúmame našu štruktúru ponuky.
Žiadne makro sa nespustí pomocou Pridať nové pretože nemá inú funkciu ako podradené podponuky.
Tento druh štruktúry menu sa ľahko udržuje. Jednoducho pridávajte nové položky s ich makrami, pri vedomí úrovne ponuky.
Kódex
Pripojte k modulu nasledujúci kód VBA. Týmto sa preskúma „MenuSheet“ a vytvorí sa prispôsobené menu.
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
Testujte kód pomocou tlačidla Test. Novo vytvorené užívateľské menu nájdete na pozícii 10 ponuky v časti Doplnky.
Obnova programu Excel
Excel je občas nestabilný a pri otvorení zlyhá, čím sa poškodí zdrojový súbor. Ak sa súbor nepodarí obnoviť, je užitočné mať k dispozícii nástroj na opravu Excel poškodenie inak sa všetka nezálohovaná práca stratí.
Úvod autora:
Felix Hooker je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane oprava súboru rar a softvérové produkty na obnovenie sql. Pre viac informácií navštívte www.datanumen. S



