Excel şeridi, belirli bir işe uyacak şekilde değiştirilebilir. Bu alıştırma, kullanıcıları görevleriyle ilgili belirli sayfalara yönlendiren yeni menüler oluşturur.
Bu makalede, Excel çalışma sayfanızda aşağıdaki gibi özelleştirilmiş menülerin nasıl oluşturulacağını anlatacağız:
Bu makalede, okuyucunun Geliştirici şeridinin görüntülendiği ve VBA Düzenleyicisine aşina olduğu varsayılmaktadır. Değilse, lütfen Google "Excel Geliştirici Sekmesi" veya "Excel Kod Penceresi".
alıştırma kitabı
Kullanılacak çalışma kitabının birkaç yaprağı vardır. Burada bulunan örneği kullanmanızı öneririz. Bu gibi görünüyor.
İlk dört sayfa işlevsizdir, bu alıştırmada yalnızca gezinme amacıyla kullanılmaktadır.
Beşinci sayfa, bu çalışma kitabına özel özelleştirilmiş menü yapısını içerecektir. Şu anda bir Test düğmesi dışında boş olmalıdır.
Menü Yapısını Ekleyin
Aşağıdaki metin bloğunu “MenuSheet” sayfasının A1 hücresine kopyalayın.
Düzey, Başlık, Konum/Makro, Bölücü
1,&Kullanıcı Araçları,10
2,Gösterge Panosunu Göster,Gösterge Panosunu Seçin
2,Yeni ekle, ,DOĞRU
3,İstemci,İstemci Seç
3,Konum,Konum Seç
3,Yönetici,Yönetici Seç
2,Kapat,Dosyayı Kapat
Menü Yapısını Biçimlendirin
Bu CSV verileri A sütununda son bulur. Bunu tek tek Excel hücrelerine biçimlendirmek için A sütununu seçin ve 'Metin sütunlara' içinde Veri sekmesi. Sınırlayıcı “virgül” olacaktır.
Yukarıdakiler, uygun kodu eklediğimizde, soldaki seviye tabanlı menü yapısını bize verecektir.
Bu alıştırmadaki ilk seviye, hakemliktir.rarçalışma kitabının tam genişliği görüntülendiğinde göreceğiniz gibi, menü çubuğunda onuncu öğe olarak yerleştirilir.
Menü Oluşturma ve Yok Etme
Yeni menüleri sadece bu çalışma kitabı için istediğimiz için, çalışma kitabını açıp kapatırken onları oluşturacağız ve yok edeceğiz.
Aşağıdaki kod şu şekildedirtarT. Çalışma kitabı açıldığında veya kapatıldığında tetiklenecektir. Çalışma kitabınızdaki bir modüle kopyalayın
MenuSheet'teki Test düğmesini Auto_Open olarak atayın.
Option Explicit Sub auto_Open() Call DeleteMenu Call CreateMenu End Sub Sub auto_Close() Call DeleteMenu End Sub
Aşağıda menü yapımızı daha yakından inceliyoruz.
Hiçbir makro tarafından tetiklenmez Yeni Ekle çünkü alt menülerin ebeveyni olmaktan başka bir işlevi yoktur.
Bu tür bir menü yapısının bakımı kolaydır. Düzey menüsünün bilincinde olarak makrolarıyla birlikte yeni öğeler eklemeniz yeterlidir.
Kod
Aşağıdaki VBA kodunu modüle ekleyin. Bu, “MenuSheet”i inceleyecek ve özelleştirilmiş menüyü oluşturacaktır.
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 düğmesiyle kodu test edin. Yeni oluşturulan kullanıcı menüsü, Eklentiler altındaki menü konumu 10'da bulunacaktır.
Excel Kurtarma
Excel bazen kararsızdır ve açıkken çökerek kaynak dosyaya zarar verir. Dosyayı kurtaramadığında, onarmak için bir araca sahip olmak yararlıdır. Excel hasarı aksi halde tüm yedeklenmemiş işler l olacaktır.ost.
Yazar Tanıtımı:
Felix Hooker, veri kurtarma uzmanıdır. DataNumendahil olmak üzere veri kurtarma teknolojilerinde dünya lideri olan , Inc. onarım rar ve sql kurtarma yazılımı ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com



