Pita Excel dapat dimodifikasi agar sesuai dengan pekerjaan tertentu. Latihan ini membuat menu baru yang mengarahkan pengguna ke lembar tertentu yang relevan dengan tugas mereka.
Pada artikel ini, kami akan memperkenalkan cara membuat menu yang disesuaikan di lembar kerja Excel Anda, seperti ini:
Artikel ini mengasumsikan bahwa pembaca memiliki pita Pengembang yang ditampilkan dan terbiasa dengan Editor VBA. Jika tidak, harap Google "Tab Pengembang Excel" atau "Jendela Kode Excel".
Buku catatan
Buku kerja yang akan digunakan memiliki jumlah lembar. Kami menyarankan Anda menggunakan sampel yang ada di sini. Ini terlihat seperti ini.
Empat lembar pertama tidak berfungsi, digunakan dalam latihan ini untuk tujuan navigasi saja.
Lembar kelima akan menampung struktur menu yang disesuaikan khusus untuk buku kerja ini. Saat ini harus kosong kecuali untuk tombol Test.
Tambahkan Struktur Menu
Salin blok teks berikut ke sel A1 dari sheet "MenuSheet".
Level, Keterangan, Posisi / Makro, Pembagi
1, & Alat Pengguna, 10
2, Tampilkan Dasbor, Pilih Dasbor
2, Tambahkan baru,, BENAR
3, Klien, SelectClient
3, Lokasi, Pilih Lokasi
3, Manajer, SelectManager
2, Tutup, CloseFile
Format Struktur Menu
Data CSV ini berakhir di kolom A. Untuk memformatnya menjadi sel Excel individual, pilih kolom A dan gunakan 'Teks ke kolom' dalam Tab data. Pembatasnya adalah "koma".
Di atas, setelah kita menambahkan kode yang sesuai, akan memberi kita struktur menu berbasis level di sebelah kiri.
Tingkat pertama, dalam latihan ini, adalah arbitrari ditempatkan sebagai item kesepuluh pada bilah menu, seperti yang akan Anda lihat ketika lebar penuh buku kerja ditampilkan.
Membuat dan Menghancurkan Menu
Karena kami hanya menginginkan menu baru untuk buku kerja khusus ini, kami akan membuat dan menghancurkannya saat membuka dan menutup buku kerja.
Kode di bawah ini adalah sebagaitart. Ini akan dipicu saat buku kerja dibuka atau ditutup. Salin ke modul di buku kerja Anda
Tetapkan tombol Test 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 memeriksa struktur menu kami lebih dekat.
Tidak ada makro yang dipicu oleh Add New karena tidak memiliki fungsi selain sebagai induk dari sub menu.
Struktur menu semacam ini mudah dirawat. Cukup tambahkan item baru dengan makronya, perhatikan menu Level.
Kode
Tambahkan kode 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 kode dengan tombol Test. Menu pengguna yang baru dibuat akan ditemukan di posisi menu 10, di bawah Add-in.
Pemulihan Excel
Excel kadang-kadang tidak stabil, dan crash saat dibuka, merusak file sumber. Jika gagal memulihkan file, sebaiknya memiliki alat untuk memperbaikinya Kerusakan Excel jika tidak, semua pekerjaan yang tidak didukung akan lost.
Pengantar Penulis:
Felix Hooker adalah pakar pemulihan data di DataNumen, Inc., yang merupakan pemimpin dunia dalam teknologi pemulihan data, termasuk memperbaiki rar dan produk perangkat lunak pemulihan sql. Untuk informasi lebih lanjut kunjungi www.datanumen.com



