VBA ile Excel Çalışma Sayfanızda Özelleştirilmiş Menüler Nasıl Oluşturulur

Şimdi paylaş:

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:Excel Çalışma Sayfanızda Özelleştirilmiş Menüler Oluşturun

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.Örnek Çalışma Kitabı

İ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.Bireysel Excel Hücrelerine Biçimlendirin

Yukarıdakiler, uygun kodu eklediğimizde, soldaki seviye tabanlı menü yapısını bize verecektir.Seviye Bazlı Menü Yapısı

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.Menü Yapımızı Daha Yakından İnceleyin

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

Şimdi paylaş:

Yoruma kapalı.