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:
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.
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.
Tegishli kodni qo'shganimizdan so'ng, yuqoridagilar chapdagi darajaga asoslangan menyu tuzilishini beradi.
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.
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



