როგორ შევქმნათ მორგებული მენიუები თქვენს Excel სამუშაო ფურცელში VBA-ს საშუალებით

გააზიარე ახლა:

Excel-ის ლენტი შეიძლება შეიცვალოს კონკრეტული სამუშაოსთვის. ეს სავარჯიშო ქმნის ახალ მენიუებს, რომლებიც მომხმარებლებს მიანიშნებენ კონკრეტულ ფურცლებზე, რომლებიც შეესაბამება მათ ამოცანებს.

ამ სტატიაში ჩვენ გაგაცნობთ, თუ როგორ უნდა შექმნათ მორგებული მენიუები თქვენს Excel-ის სამუშაო ფურცელში, მაგალითად:შექმენით მორგებული მენიუები თქვენს Excel სამუშაო ფურცელში

ეს სტატია ვარაუდობს, რომ მკითხველს აქვს დეველოპერის ლენტი ნაჩვენები და იცნობს VBA რედაქტორს. თუ არა, გთხოვთ Google „Excel Developer Tab“ ან „Excel Code Window“.

სამუშაო წიგნი

გამოსაყენებელ სამუშაო წიგნს აქვს რამდენიმე ფურცელი. ჩვენ გირჩევთ გამოიყენოთ აქ ნაპოვნი ნიმუში. ეს ასე გამოიყურება.სამუშაო წიგნის ნიმუში

პირველი ოთხი ფურცელი დისფუნქციურია და გამოიყენება ამ სავარჯიშოში მხოლოდ ნავიგაციის მიზნებისთვის.

მეხუთე ფურცელი შეიცავს პერსონალურად მორგებულ მენიუს სტრუქტურას, განსაკუთრებით ამ სამუშაო წიგნისთვის. ამჟამად ის ცარიელი უნდა იყოს ტესტის ღილაკის გარდა.

დაამატეთ მენიუს სტრუქტურა

დააკოპირეთ ტექსტის შემდეგი ბლოკი ფურცლის "MenuSheet" A1 უჯრედში.

დონე, წარწერა, პოზიცია/მაკრო, გამყოფი

1, და მომხმარებლის ინსტრუმენტები, 10

2, დაფის ჩვენება, აირჩიეთ დაფა

2, დაამატეთ ახალი, ,TRUE

3,კლიენტი,SelectClient

3, მდებარეობა, აირჩიეთ მდებარეობა

3, მენეჯერი, აირჩიეთ მენეჯერი

2, Close, CloseFile

მენიუს სტრუქტურის ფორმატირება

ეს CSV მონაცემები მთავრდება A სვეტში. Excel-ის ცალკეულ უჯრედებად დასაფორმებლად აირჩიეთ სვეტი A და გამოიყენეთ "ტექსტი სვეტებზე" იმ მონაცემთა ჩანართი. დელიმიტერი იქნება "მძიმით".დაფორმატეთ იგი ცალკეულ Excel უჯრედებად

ზემოთ მოყვანილი, მას შემდეგ რაც დავამატებთ შესაბამის კოდს, მოგვცემს დონეზე დაფუძნებულ მენიუს სტრუქტურას მარცხნივ.დონეზე დაფუძნებული მენიუს სტრუქტურა

ამ სავარჯიშოში პირველი დონე თვითნებურად არის განთავსებული მენიუს ზოლის მეათე ელემენტად, რასაც დაინახავთ სამუშაო წიგნის სრული სიგანის ჩვენებისას.

მენიუს შექმნა და განადგურება

ვინაიდან ჩვენ გვსურს მხოლოდ ახალი მენიუები ამ კონკრეტული სამუშაო წიგნისთვის, ჩვენ შევქმნით და გავანადგურებთ მათ სამუშაო წიგნის გახსნისა და დახურვისას.

ქვემოთ მოცემული კოდი დასაწყისია. ის გააქტიურდება სამუშაო წიგნის გახსნის ან დახურვისას. დააკოპირეთ ის თქვენს სამუშაო წიგნში არსებულ მოდულში.

მიანიჭეთ ტესტის ღილაკი MenuSheet-ზე Auto_Open-ზე.

Option Explicit

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

ქვემოთ ჩვენ უფრო დეტალურად განვიხილავთ მენიუს სტრუქტურას.შეისწავლეთ ჩვენი მენიუს სტრუქტურა უფრო მჭიდროდ

არცერთი მაკრო არ არის გააქტიურებული ახალი რადგან მას არ აქვს სხვა ფუნქცია, გარდა ქვემენიუების მშობლისა.

მენიუს ასეთი სტრუქტურის შენარჩუნება მარტივია. უბრალოდ დაამატეთ ახალი ელემენტი მათ მაკროებთან, მენიუს დონის გათვალისწინებით.

კოდექსი

მოდულს დაამატეთ შემდეგი VBA კოდი. ეს შეისწავლის "MenuSheet" და შექმნის მორგებულ მენიუს.

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

შეამოწმეთ კოდი ტესტის ღილაკით. ახლად შექმნილი მომხმარებლის მენიუ ნახავთ მენიუს მე-10 პოზიციაზე, დანამატების ქვეშ.

Excel-ის აღდგენა

Excel ზოგჯერ არასტაბილურია და იშლება გახსნისას, რაც აზიანებს წყაროს ფაილს. სადაც ფაილი ვერ აღდგება, სასარგებლოა შესაკეთებელი ხელსაწყოს არსებობა Excel-ის დაზიანება წინააღმდეგ შემთხვევაში, ყველა დაურეზერვებელი ნამუშევარი დაიკარგება.

ავტორი შესავალი:

ფელიქს ჰუკერი არის მონაცემთა აღდგენის ექსპერტი DataNumen, Inc., რომელიც მსოფლიო ლიდერია მონაცემთა აღდგენის ტექნოლოგიებში, მათ შორის rar-ის შეკეთება და sql აღდგენის პროგრამული პროდუქტები. დამატებითი ინფორმაციისთვის ეწვიეთ www.datanumen. ერთად

გააზიარე ახლა:

კომენტარები დახურულია.