Panglica Excel poate fi modificată pentru a se potrivi unei anumite lucrări. Acest exercițiu creează noi meniuri care indică utilizatorii către anumite foi relevante pentru sarcina lor.
În acest articol, vom prezenta cum să creați meniuri personalizate în foaia de lucru Excel, astfel:
Acest articol presupune că cititorul are afișată panglica pentru dezvoltatori și este familiarizat cu Editorul VBA. Dacă nu, vă rugăm să Google „Fila Dezvoltator Excel” sau „Fereastra Cod Excel”.
Workbook
Caietul de lucru care urmează să fie utilizat are un număr de foi. Vă sugerăm să utilizați exemplul găsit aici. Arata cam asa.
Primele patru foi sunt disfuncționale, fiind folosite în acest exercițiu doar în scop de navigare.
A cincea foaie va conține structura de meniu personalizată specifică acestui registru de lucru. În prezent, ar trebui să fie necompletat, cu excepția unui buton Test.
Adăugați structura meniului
Copiați următorul bloc de text în celula A1 a foii „MenuSheet”.
Nivel, Legendă, Poziție/Macro, Divizor
1,& Instrumente utilizator,10
2, Afișați tabloul de bord, selectați tabloul de bord
2,Adăugați nou, ,ADEVĂRAT
3,Client,SelectClient
3,Location,SelectLocation
3, Manager, SelectManager
2, Închide, Închide fișier
Formatați structura meniului
Aceste date CSV ajung în coloana A. Pentru a le formata în celule Excel individuale, selectați coloana A și utilizați „Text către coloane” în Fila date. Delimitatorul ar fi „virgulă”.
Cele de mai sus, odată ce am adăugat codul corespunzător, ne vor oferi structura meniului pe nivel din stânga.
Primul nivel, în acest exercițiu, este plasat arbitrar ca al zecelea element din bara de meniu, așa cum veți vedea când este afișată lățimea completă a registrului de lucru.
Crearea și distrugerea meniurilor
Deoarece vrem doar noile meniuri pentru acest registru de lucru specific, le vom crea și le vom distruge la deschiderea și închiderea registrului de lucru.
Codul de mai jos este un început. Se va declanșa la deschiderea sau închiderea registrului de lucru. Copiați-l într-un modul din registrul de lucru.
Atribuiți butonul Test din MenuSheet la Auto_Open.
Option Explicit Sub auto_Open() Call DeleteMenu Call CreateMenu End Sub Sub auto_Close() Call DeleteMenu End Sub
Mai jos, examinăm mai îndeaproape structura meniului nostru.
Nicio macrocomandă nu este declanșată de Adaugă nou deoarece nu are altă funcție decât cea de părinte al submeniurilor.
Acest tip de structură de meniu este ușor de întreținut. Pur și simplu adăugați elemente noi cu macrocomenzile lor, fiind conștienți de nivelul de meniu.
Codul
Adăugați următorul cod VBA la modul. Aceasta va examina „MenuSheet” și va crea meniul personalizat.
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
Testați codul cu butonul Test. Meniul utilizator nou creat va fi găsit la poziția 10 a meniului, sub Suplimente.
Recuperare Excel
Excel este instabil uneori și se blochează în timp ce este deschis, dăunând fișierului sursă. Acolo unde nu reușește să recupereze fișierul, este util să aveți un instrument de reparat deteriorarea Excel altfel, toată munca necopiată se va pierde.
Introducerea autorului:
Felix Hooker este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv reparare fișiere rar și produse software de recuperare sql. Pentru mai multe informații vizitați www.datanumen.com



