Wstążkę programu Excel można modyfikować w celu dostosowania do konkretnego zadania. To ćwiczenie tworzy nowe menu, które kierują użytkowników do określonych arkuszy odpowiednich do ich zadań.
W tym artykule przedstawimy, jak tworzyć niestandardowe menu w arkuszu programu Excel, na przykład:
W tym artykule założono, że czytelnik ma wyświetloną wstążkę programisty i zna edytor VBA. Jeśli nie, wybierz Google „Excel Developer Tab” lub „Excel Code Window”.
Podręcznik z ćwiczeniami
Skoroszyt, który ma zostać użyty, zawiera kilka arkuszy. Sugerujemy użycie próbki znalezionej tutaj. To wygląda tak.
Pierwsze cztery arkusze są dysfunkcyjne i służą w tym ćwiczeniu wyłącznie do celów nawigacyjnych.
Piąty arkusz będzie zawierał dostosowaną strukturę menu, właściwą dla tego skoroszytu. Obecnie powinno być puste, z wyjątkiem przycisku Test.
Dodaj strukturę menu
Skopiuj następujący blok tekstu do komórki A1 arkusza „MenuSheet”.
Poziom, podpis, pozycja / makro, dzielnik
1 i Narzędzia użytkownika, 10
2, pokaż pulpit nawigacyjny, wybierz pulpit nawigacyjny
2, Dodaj nowe,, PRAWDA
3, Klient, SelectClient
3, lokalizacja, wybierz lokalizację
3, Menedżer, SelectManager
2, zamknij, zamknij plik
Sformatuj strukturę menu
Te dane CSV kończą się w kolumnie A. Aby sformatować je w poszczególnych komórkach programu Excel, wybierz kolumnę A i użyj „Tekst do kolumn” Karta danych. Separatorem byłby „przecinek”.
Powyższe, po dodaniu odpowiedniego kodu, da nam strukturę menu opartą na poziomach po lewej stronie.
Pierwszy poziom w tym ćwiczeniu został umieszczony arbitralnie jako dziesiąty element na pasku menu, co zobaczysz, gdy wyświetli się pełna szerokość skoroszytu.
Tworzenie i niszczenie menu
Ponieważ chcemy tylko nowych menu dla tego konkretnego skoroszytu, utworzymy je i zniszczymy podczas otwierania i zamykania skoroszytu.
Poniższy kod to początek. Zostanie on uruchomiony po otwarciu lub zamknięciu skoroszytu. Skopiuj go do modułu w skoroszycie.
Przypisz przycisk Test w MenuSheet do Auto_Open.
Option Explicit Sub auto_Open() Call DeleteMenu Call CreateMenu End Sub Sub auto_Close() Call DeleteMenu End Sub
Poniżej przyjrzymy się dokładniej strukturze naszego menu.
Żadne makro nie jest wyzwalane przez dodaj nowy ponieważ nie pełni żadnej innej funkcji niż jako rodzic podmenu.
Ten rodzaj struktury menu jest łatwy w utrzymaniu. Po prostu dodaj nowe pozycje za pomocą ich makr, mając świadomość poziomu menu.
Kod
Dołącz następujący kod VBA do modułu. Spowoduje to zbadanie „Arkusza menu” i utworzenie dostosowanego 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
Przetestuj kod za pomocą przycisku Testuj. Nowo utworzone menu użytkownika zostanie znalezione na pozycji menu 10, w sekcji Dodatki.
Odzyskiwanie programu Excel
Program Excel jest czasami niestabilny i ulega awarii podczas otwierania, uszkadzając plik źródłowy. W przypadku niepowodzenia odzyskania pliku przydatne jest narzędzie do naprawy Uszkodzenia Excela w przeciwnym wypadku cała nieutworzona kopia zapasowa zostanie utracona.
Wprowadzenie autora:
Felix Hooker jest ekspertem w dziedzinie odzyskiwania danych w DataNumen, Inc., która jest światowym liderem w technologiach odzyskiwania danych, w tym napraw rar i oprogramowanie do odzyskiwania sql. po więcej informacji odwiedź www.datanumen.com



