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 და გამოიყენეთ "ტექსტი სვეტებზე" იმ მონაცემთა ჩანართი. დელიმიტერი იქნება "მძიმით".
ზემოთ მოყვანილი, მას შემდეგ რაც დავამატებთ შესაბამის კოდს, მოგვცემს დონეზე დაფუძნებულ მენიუს სტრუქტურას მარცხნივ.
ამ სავარჯიშოში პირველი დონე თვითნებურად არის განთავსებული მენიუს ზოლის მეათე ელემენტად, რასაც დაინახავთ სამუშაო წიგნის სრული სიგანის ჩვენებისას.
მენიუს შექმნა და განადგურება
ვინაიდან ჩვენ გვსურს მხოლოდ ახალი მენიუები ამ კონკრეტული სამუშაო წიგნისთვის, ჩვენ შევქმნით და გავანადგურებთ მათ სამუშაო წიგნის გახსნისა და დახურვისას.
ქვემოთ მოცემული კოდი დასაწყისია. ის გააქტიურდება სამუშაო წიგნის გახსნის ან დახურვისას. დააკოპირეთ ის თქვენს სამუშაო წიგნში არსებულ მოდულში.
მიანიჭეთ ტესტის ღილაკი 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. ერთად



