Az Excel szalag módosítható, hogy megfeleljen egy adott munkának. Ez a gyakorlat új menüket hoz létre, amelyek a felhasználókat a feladatukhoz kapcsolódó konkrét lapokra irányítják.
Ebben a cikkben bemutatjuk, hogyan hozhat létre testreszabott menüket az Excel-munkalapon, például:
Ez a cikk feltételezi, hogy az olvasó megjeleníti a Fejlesztői szalagot, és ismeri a VBA-szerkesztőt. Ha nem, használja a Google „Excel Developer Tab” vagy az „Excel Code Window” szolgáltatását.
Munkafüzet
A használandó munkafüzet számos lapból áll. Javasoljuk, hogy használja az itt található mintát. Ez így néz ki.
Az első négy lap nem működik, ebben a gyakorlatban csak navigációs célokra használják.
Az ötödik lap a munkafüzetre jellemző testreszabott menüszerkezetet tartalmazza. Jelenleg üresnek kell lennie, kivéve a Teszt gombot.
Adja hozzá a menüszerkezetet
Másolja a következő szövegblokkot a „MenuSheet” lap A1 cellájába.
Szint, Felirat, Pozíció/Makró, Elválasztó
1,&Felhasználói eszközök,10
2, Irányítópult megjelenítése, Irányítópult kiválasztása
2,Új hozzáadása, ,IGAZ
3,Client,SelectClient
3,Hely,SelectLocation
3,Manager,SelectManager
2,Close,CloseFile
Formázza meg a menüszerkezetet
Ezek a CSV-adatok az A oszlopba kerülnek. Ha egyedi Excel-cellákba szeretné formázni, válassza ki az A oszlopot, és használja "Szöveg oszlopokba" a Adatok fülre. A határoló „vessző” lenne.
A fentiek, miután hozzáadtuk a megfelelő kódot, megkapjuk a bal oldali szint alapú menüstruktúrát.
Az első szint ebben a gyakorlatban önkényesen a menüsor tizedik elemeként került elhelyezésre, ahogyan azt a munkafüzet teljes szélességének megjelenítésekor is látni fogja.
Menük létrehozása és megsemmisítése
Mivel csak ehhez a munkafüzethez szeretnénk új menüket, ezeket a munkafüzet nyitásakor és bezárásakor létrehozzuk és megsemmisítjük.
Az alábbi kód egy kezdőkód. A munkafüzet megnyitásakor vagy bezárásakor aktiválódik. Másolja be a munkafüzet egy moduljába.
Rendelje hozzá a MenuSheet Teszt gombját az Auto_Open értékhez.
Option Explicit Sub auto_Open() Call DeleteMenu Call CreateMenu End Sub Sub auto_Close() Call DeleteMenu End Sub
Az alábbiakban részletesebben megvizsgáljuk menüszerkezetünket.
Egyetlen makrót sem vált ki Új mert nincs más funkciója, mint az almenük szülőjeként.
Ez a fajta menüstruktúra könnyen karbantartható. Egyszerűen adjon hozzá új elemeket a makróikkal, a menüszint tudatában.
A kód
Adja hozzá a következő VBA-kódot a modulhoz. Ez megvizsgálja a „MenuSheet”-et, és létrehozza a testreszabott menüt.
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
Tesztelje a kódot a Teszt gombbal. Az újonnan létrehozott felhasználói menü a menü 10. pozíciójában, a Bővítmények alatt található.
Excel helyreállítás
Az Excel időnként instabil, és megnyitás közben összeomlik, károsítva a forrásfájlt. Ha nem sikerül helyreállítani a fájlt, hasznos egy eszköz a javításhoz Excel sérülés különben az összes nem mentett munka elveszik.
Szerző Bevezetés:
Felix Hooker adat-helyreállítási szakértő DataNumen, Inc., amely világelső az adat-helyreállítási technológiák területén, beleértve javítás rar és SQL helyreállítási szoftvertermékek. További információért látogasson el www.datanumen.com



