VBA orqali Excel ish varag'ida moslashtirilgan menyularni qanday yaratish mumkin

Hozir ulashing:

Excel lentasi ma'lum bir ishga mos ravishda o'zgartirilishi mumkin. Ushbu mashq foydalanuvchilarni o'z vazifalariga mos keladigan maxsus varaqlarga yo'naltiradigan yangi menyularni yaratadi.

Ushbu maqolada biz Excel ish varag'ida moslashtirilgan menyularni qanday yaratishni aytib beramiz, masalan:Excel ish varag'ida moslashtirilgan menyular yarating

Ushbu maqolada o'quvchi dasturchi tasmasi ko'rsatilgan va VBA muharriri bilan tanish deb taxmin qilinadi. Agar yo'q bo'lsa, Google "Excel Developer Tab" yoki "Excel Code Window".

Ish kitobi

Ishlatiladigan ish kitobida bir qancha varaqlar mavjud. Bu yerda topilgan namunadan foydalanishni tavsiya qilamiz. Bu shunday ko'rinadi.Ishchi kitob namunasi

Birinchi to'rtta varaq ishlamaydi, bu mashqda faqat navigatsiya maqsadlarida foydalaniladi.

Beshinchi varaqda ushbu ish kitobiga xos moslashtirilgan menyu tuzilishi mavjud. Hozirda Test tugmasidan tashqari bo'sh bo'lishi kerak.

Menyu tuzilmasini qo'shing

Quyidagi matn blokini “MenyuSheet” varag‘ining A1 katakchasiga ko‘chiring.

Daraja, Sarlavha, Pozitsiya/Makro, Bo'luvchi

1,&Foydalanuvchi asboblari,10

2, Boshqaruv panelini ko'rsatish, Boshqaruv panelini tanlash

2, yangisini qo'shing, , TRUE

3, mijoz, tanlash mijoz

3, Joylashuv, Joylashuvni tanlash

3, Menejer, SelectManager

2, Yopish, Faylni yopish

Menyu tuzilmasini formatlash

Ushbu CSV ma'lumotlari A ustunida tugaydi. Uni alohida Excel kataklariga formatlash uchun A ustunini tanlang va foydalaning "Ustunlarga matn" yilda Ma'lumotlar yorlig'i. Ajratuvchi "vergul" bo'ladi.Uni alohida Excel yacheykalariga formatlang

Tegishli kodni qo'shganimizdan so'ng, yuqoridagilar chapdagi darajaga asoslangan menyu tuzilishini beradi.Darajaga asoslangan menyu tuzilishi

Ushbu mashqda birinchi daraja menyu satrida o'ninchi element sifatida tasodifiy joylashtirilgan, buni ish daftarining to'liq kengligi ko'rsatilganda ko'rasiz.

Menyularni yaratish va yo'q qilish

Biz faqat ushbu maxsus ish kitobi uchun yangi menyularni xohlayotganimiz sababli, biz ularni ish kitobini ochish va yopish paytida yaratamiz va yo'q qilamiz.

Quyidagi kod boshlang'ich koddir. U ish daftari ochilganda yoki yopilganda ishga tushadi. Uni ish daftaringizdagi modulga nusxalang.

MenuSheet-dagi Test tugmasini Auto_Open-ga belgilang.

Option Explicit

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

Quyida biz menyu tuzilishini batafsil ko'rib chiqamiz.Menyu tuzilmamizni batafsilroq ko'rib chiqing

Hech qanday makro ishga tushirilmaydi Yangi qo'shish chunki u pastki menyularning ota-onasidan boshqa hech qanday funktsiyaga ega emas.

Bunday menyu tuzilishini saqlash oson. Darajali menyudan xabardor bo'lgan holda, ularning makrolari bilan yangi elementlarni qo'shing.

Kodeks

Quyidagi VBA kodini modulga qo'shing. Bu "MenuSheet" ni ko'rib chiqadi va moslashtirilgan menyuni yaratadi.

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

Test tugmasi bilan kodni sinab ko'ring. Yangi yaratilgan foydalanuvchi menyusi menyuning 10-pozitsiyasida, Qo'shimchalar ostida topiladi.

Excel qayta tiklash

Excel ba'zida beqaror va ochiq holatda ishdan chiqadi va manba faylga zarar etkazadi. Faylni tiklay olmasa, ta'mirlash uchun vositaga ega bo'lish foydali bo'ladi Excelga zarar aks holda, barcha zaxiralanmagan ishlar yo'qoladi.

Muallif kirish:

Feliks Xuker ma'lumotlarni qayta tiklash bo'yicha mutaxassis DataNumenMa'lumotlarni qayta tiklash texnologiyalari bo'yicha jahon yetakchisi bo'lgan , Inc rar fayllarini ta'mirlash va sql-ni tiklash dasturiy mahsulotlar. Qo'shimcha ma'lumot olish uchun tashrif buyuring www.datanumen.com

Hozir ulashing:

Comments are closed.