Cara Membuat Menu Disesuaikan dalam Lembaran Kerja Excel Anda melalui VBA

Kongsi Sekarang:

Pita Excel boleh diubah suai agar sesuai dengan pekerjaan tertentu. Latihan ini membuat menu baru yang mengarahkan pengguna ke helaian tertentu yang berkaitan dengan tugas mereka.

Dalam artikel ini, kami akan memperkenalkan cara membuat menu yang disesuaikan dalam lembaran kerja Excel anda, seperti ini:Buat Menu Disesuaikan Dalam Lembaran Kerja Excel Anda

Artikel ini menganggap pembaca memaparkan pita Pengembang dan sudah biasa dengan Editor VBA. Sekiranya tidak, sila Google "Tab Pembangun Excel" atau "Tetingkap Kod Excel".

Buku kerja

Buku kerja yang akan digunakan mempunyai sejumlah helaian. Kami mencadangkan anda menggunakan sampel yang terdapat di sini. Ia kelihatan seperti ini.Contoh Buku Kerja

Empat helaian pertama tidak berfungsi, digunakan dalam latihan ini untuk tujuan navigasi sahaja.

Lembaran kelima akan menyimpan struktur menu yang disesuaikan khas untuk buku kerja ini. Pada masa ini ia mesti kosong kecuali butang Uji.

Tambah Struktur Menu

Salin blok teks berikut ke dalam sel A1 dari lembaran "MenuSheet".

Tahap, Kapsyen, Kedudukan / Makro, Pembahagi

1, & Alat Pengguna, 10

2, Tunjukkan Papan Pemuka, Pilih Papan Pemuka

2, Tambah baru, BENAR

3, Pelanggan, Pilih Pelanggan

3, Lokasi, Pilih Lokasi

3, Pengurus, SelectManager

2, Tutup, TutupFile

Format Struktur Menu

Data CSV ini berakhir di lajur A. Untuk memformatnya menjadi sel Excel individu, pilih lajur A dan gunakan 'Teks ke lajur' dalam Tab data. Pembatasnya adalah "koma".Format ke Sel Excel Individu

Perkara di atas, setelah kita menambahkan kod yang sesuai, akan memberi kita struktur menu berdasarkan peringkat di sebelah kiri.Struktur Menu Berasaskan Tahap

Aras pertama, dalam latihan ini, diletakkan secara sewenang-wenangnya sebagai item kesepuluh pada bar menu, seperti yang akan anda lihat apabila lebar penuh buku kerja dipaparkan.

Membuat dan Memusnahkan Menu

Oleh kerana kami hanya mahukan menu baru untuk buku kerja khusus ini, kami akan membuat dan memusnahkannya semasa membuka dan menutup buku kerja.

Kod di bawah adalah permulaan. Ia akan dicetuskan apabila buku kerja dibuka atau ditutup. Salin ke dalam modul dalam buku kerja anda

Tetapkan butang Uji pada MenuSheet ke Auto_Open.

Option Explicit

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

Di bawah ini, kami mengkaji struktur menu kami dengan lebih teliti.Kaji Struktur Menu Kami Dengan Lebih Dekat

Tidak ada makro yang dicetuskan oleh Tambah Baru kerana tidak mempunyai fungsi selain sebagai induk sub-menu.

Struktur menu seperti ini senang dijaga. Cukup tambahkan item baru dengan makro mereka, dengan mengetahui Tahap menu.

Kod ini

Lampirkan kod VBA berikut ke modul. Ini akan memeriksa "MenuSheet" dan membuat menu yang disesuaikan.

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

Uji kod dengan butang Uji. Menu pengguna yang baru dibuat akan ditemui di kedudukan menu 10, di bawah Add-in.

Pemulihan Excel

Excel kadang-kadang tidak stabil, dan terhempas semasa terbuka, merosakkan fail sumber. Sekiranya fail tidak dapat dipulihkan, berguna untuk mempunyai alat untuk diperbaiki Kerosakan Excel jika tidak, semua kerja yang tidak disandarkan akan hilang.

Pengenalan Pengarang:

Felix Hooker adalah pakar pemulihan data di DataNumen, Inc., yang merupakan pemimpin dunia dalam teknologi pemulihan data, termasuk pembaikan rar dan produk perisian pemulihan sql. Untuk maklumat lebih lanjut, lawati www.datanumen.com

Kongsi Sekarang:

Ruangan komen telah ditutup.