Cum să creați meniuri personalizate în foaia de lucru Excel prin VBA

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:Creați meniuri personalizate în foaia de lucru Excel

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.Exemplu de registru de lucru

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ă”.Formatați-l în celule Excel individuale

Cele de mai sus, odată ce am adăugat codul corespunzător, ne vor oferi structura meniului pe nivel din stânga.Structura meniului pe nivel

Primul nivel, în acest exercițiu, este arbitrulrareste plasat ca al zecelea element din bara de meniu, după 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 catart. Acesta va fi declanșat atunci când registrul de lucru este deschis sau închis. Copiați-l într-un modul din registrul de lucru

Atribuiți butonul Test din MenuSheet la Auto_Open.

Opțiune Explicit Sub auto_Open() Apelați DeleteMenu Apelați CreateMenu End Sub Sub auto_Close() Apelați DeleteMenu End Sub

Mai jos, examinăm mai îndeaproape structura meniului nostru.Examinați 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() ' Apelat din Auto_Open. „NOTĂ: Nu există nicio gestionare a erorilor în această subrutină Dim MenuSheet As Worksheet Dim MenuObject As CommandBarPopup Dim MenuItem Ca obiect Dim SubMenuItem As CommandBarButton Dim sRow As Integer Dim MenuLevel, NextLevel, PositionOrMacro, Caption, Divider Set MenuSheet = ThisWheet ") Apelați DeleteMenu sRow = 2 'start row ' Adăugați meniuri folosind structura conform intervalului MenuSheet ("A" și sRow). Selectați 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 ' Adăugați meniul de nivel superior la foaia de lucru CommandBar Set MenuObject = Application.CommandBars(1). _ Controls.Add(Type:=msoControlPopup, _ Before:=PositionOrMacro, _ Temporary:=True) MenuObject.Caption = Caption Case 2 ' Un element de meniu Dacă NextLevel = 3 Apoi Set MenuItem = MenuObject.Controls.Add(Type:=msoControlPopup) Else Set MenuItem = MenuObject.Controls.Add(Type:=msoControlButton) MenuItem.OnAction = PositionOrMacro End If MenuItem.Caption = Subtitrare Dacă Divizor Atunci MenuItem.BeginGroup = Cazul adevărat 3 ' Un set de articole din submeniu SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton) SubMenuItem.Caption = Poziție.CaptionOMencroActionI = Poziție. Dacă Divider, atunci SubMenuItem.BeginGroup = True End Selectați sRow = sRow + 1 Range(„A” și sRow).Selectați „************************ *************** Loop Sheets ("Tabloul de bord").Activate End Sub Sub DeleteMenu() ' Acest sub va fi executat când registrul de lucru se închide Dim MenuSheet As Worksheet Dim sRow As Integer Dim Subtitrare ca șir în caz de eroare Reluare Următoarea 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(„Tabloul de bord”).Activați End Sub Sub SelectClient() Sheets(„Client”).Activați End Sub Sub SelectLocation() Sheets(„Locație”).Activați End Sub Sub SelectManager() Sheets(„Manager”).Activați End Sub Sub CloseFile() MsgBox „Închidere! (scrieți propriul cod în modul)" 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 în caz contrar, toate lucrările fără rezervă va fi lost.

Introducerea autorului:

Felix Hooker este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv repara rar și produse software de recuperare sql. Pentru mai multe informații vizitați www.datanumen.com

Lasă un comentariu

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate *