Si të krijoni menu të personalizuara në fletën tuaj të punës në Excel përmes VBA

Shiriti i Excel mund të modifikohet për t'iu përshtatur një pune të caktuar. Ky ushtrim krijon meny të reja që i drejtojnë përdoruesit drejt fletëve specifike që lidhen me detyrën e tyre.

Në këtë artikull, ne do të prezantojmë se si të krijoni menutë e personalizuara në fletën tuaj të punës Excel, si kjo:Krijoni menu të personalizuara në fletën tuaj të punës në Excel

Ky artikull supozon se lexuesi ka të shfaqur shiritin e Zhvilluesit dhe është i njohur me Redaktuesin VBA. Nëse jo, ju lutemi Google "Excel Developer Tab" ose "Excel Code Window".

manual

Libri i punës që do të përdoret ka një numër fletësh. Ne ju sugjerojmë të përdorni mostrën e gjetur këtu. Duket kështu.Shembull i Librezës së Punës

Katër fletët e para janë jofunksionale, duke u përdorur në këtë ushtrim vetëm për qëllime navigimi.

Fleta e pestë do të mbajë strukturën e personalizuar të menusë veçanërisht për këtë libër pune. Aktualisht duhet të jetë bosh, përveç një butoni Test.

Shtoni strukturën e menysë

Kopjoni bllokun e mëposhtëm të tekstit në qelizën A1 të fletës "MenuSheet".

Niveli, Titulli, Pozicioni/Makro, Ndarësi

1,&Mjetet e Përdoruesit,10

2,Shfaq panelin e kontrollit,Zgjidh panelin

2,Shto të reja, ,E VËRTETË

3,Klient,ZgjedhKlient

3,Vendndodhja,ZgjidhVendndodhja

3, Menaxher, SelectManager

2, Mbyll, Mbylle skedarin

Formatoni strukturën e menysë

Këto të dhëna CSV përfundojnë në kolonën A. Për ta formatuar në qeliza individuale të Excel, zgjidhni kolonën A dhe përdorni "Teksti në kolona" në Skeda e të dhënave. Kufizuesi do të ishte "presje".Formatoni atë në qeliza individuale Excel

Sa më sipër, pasi të kemi shtuar kodin e duhur, do të na japë strukturën e menusë së bazuar në nivel në të majtë.Struktura e menysë e bazuar në nivele

Niveli i parë, në këtë ushtrim, vendoset në mënyrë arbitrare si elementi i dhjetë në shiritin e menusë, siç do ta shihni kur të shfaqet gjerësia e plotë e librit të punës.

Krijimi dhe shkatërrimi i menuve

Meqenëse ne duam vetëm menutë e reja për këtë libër pune specifik, ne do t'i krijojmë dhe shkatërrojmë ato me hapjen dhe mbylljen e librit të punës.

Kodi më poshtë është një fillim. Do të aktivizohet kur libri i punës hapet ose mbyllet. Kopjojeni atë në një modul në librin tuaj të punës.

Cakto butonin Test në MenuSheet në Auto_Open.

Option Explicit

Sub auto_Open()
    Call DeleteMenu
    Call CreateMenu
 End Sub
 
Sub auto_Close()
    Call DeleteMenu
End Sub

Më poshtë, ne shqyrtojmë strukturën tonë të menusë më nga afër.Shqyrtoni strukturën e menysë sonë më nga afër

Asnjë makro nuk nxitet nga Shto re sepse nuk ka funksion tjetër veçse si prind i nënmenuve.

Kjo lloj strukture menyje është e lehtë për tu mirëmbajtur. Thjesht shtoni artikuj të rinj me makrot e tyre, duke qenë të vetëdijshëm për Nivelin e menysë.

Kodi

Shtoni kodin e mëposhtëm VBA në modul. Kjo do të ekzaminojë "MenuSheet" dhe do të krijojë menunë e personalizuar.

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

Testoni kodin me butonin Test. Menyja e përdoruesit e krijuar rishtazi do të gjendet në pozicionin 10 të menysë, nën Shtesat.

Rimëkëmbja e Excel-it

Excel është i paqëndrueshëm nganjëherë dhe rrëzohet kur është i hapur, duke dëmtuar skedarin burimor. Kur nuk arrin të rikuperojë skedarin, është e dobishme të keni një mjet për të riparuar Dëmtimi i Excel-it përndryshe e gjithë puna e pakopuar do të humbasë.

Hyrje e autorit:

Felix Hooker është një ekspert i rikuperimit të të dhënave në DataNumen, Inc., e cila është lider botëror në teknologjitë e rikuperimit të të dhënave, duke përfshirë riparim rar dhe produkte softuerike për rikuperimin sql. Për më shumë informacion vizitoni www.datanumen.com

Komentet janë të mbyllura.