Dải băng Excel có thể được sửa đổi để phù hợp với một công việc cụ thể. Bài tập này tạo ra các menu mới hướng người dùng đến các trang cụ thể có liên quan đến nhiệm vụ của họ.
Trong bài viết này, chúng tôi sẽ giới thiệu cách tạo các menu tùy chỉnh trong bảng tính Excel của bạn, như sau:
Bài viết này giả định rằng người đọc đã hiển thị dải băng Nhà phát triển và quen thuộc với Trình soạn thảo VBA. Nếu không, hãy Google “Excel Developer Tab” hoặc “Excel Code Window”.
Bảng tính
Sổ làm việc được sử dụng có một số trang tính. Chúng tôi khuyên bạn nên sử dụng mẫu được tìm thấy ở đây. Nó trông như thế này.
Bốn tờ đầu tiên không hoạt động, được sử dụng trong bài tập này chỉ nhằm mục đích điều hướng.
Trang thứ năm sẽ chứa cấu trúc menu tùy chỉnh dành riêng cho sổ làm việc này. Hiện tại nó phải trống ngoại trừ nút Kiểm tra.
Thêm cấu trúc menu
Sao chép khối văn bản sau vào ô A1 của trang “MenuSheet”.
Cấp độ, Chú thích, Vị trí/Macro, Dải phân cách
1,&Công cụ người dùng,10
2,Hiển thị Bảng điều khiển,ChọnBảng điều khiển
2,Thêm mới, ĐÚNG
3,Khách hàng,ChọnKhách hàng
3,Vị trí,ChọnVị trí
3, Trình quản lý, Trình quản lý chọn
2,Đóng,ĐóngTệp
Định dạng cấu trúc menu
Dữ liệu CSV này kết thúc ở cột A. Để định dạng nó thành các ô Excel riêng lẻ, hãy chọn cột A và sử dụng 'Chuyển văn bản thành cột' trong Tab dữ liệu. Dấu phân cách sẽ là “dấu phẩy”.
Ở trên, khi chúng tôi đã thêm mã thích hợp, sẽ cung cấp cho chúng tôi cấu trúc menu dựa trên cấp độ ở bên trái.
Cấp độ đầu tiên trong bài tập này là trọng tàirarđược đặt ở mục thứ mười trên thanh menu, như bạn sẽ thấy khi toàn bộ chiều rộng của sổ làm việc được hiển thị.
Tạo và hủy menu
Vì chúng tôi chỉ muốn các menu mới cho sổ làm việc cụ thể này nên chúng tôi sẽ tạo và hủy chúng khi mở và đóng sổ làm việc.
Mã dưới đây là nhưtart. Nó sẽ được kích hoạt khi sổ làm việc được mở hoặc đóng. Sao chép nó vào một mô-đun trong sổ làm việc của bạn
Gán nút Kiểm tra trên MenuSheet cho Auto_Open.
Option Explicit Sub auto_Open() Call DeleteMenu Call CreateMenu End Sub Sub auto_Close() Call DeleteMenu End Sub
Dưới đây, chúng tôi xem xét cấu trúc menu của chúng tôi chặt chẽ hơn.
Không có macro nào được kích hoạt bởi Thêm mới bởi vì nó không có chức năng nào khác ngoài chức năng cha của các menu con.
Loại cấu trúc menu này rất dễ bảo trì. Chỉ cần thêm các mục mới bằng macro của chúng, lưu ý đến Cấp độ của menu.
Mật mã
Nối mã VBA sau vào mô-đun. Thao tác này sẽ kiểm tra “MenuSheet” và tạo menu tùy chỉnh.
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
Kiểm tra mã bằng nút Kiểm tra. Menu người dùng mới được tạo sẽ được tìm thấy ở vị trí menu 10, bên dưới Phần bổ trợ.
Phục hồi Excel
Excel đôi khi không ổn định và bị treo khi mở, làm hỏng tệp nguồn. Trường hợp không khôi phục được tập tin, việc có một công cụ để sửa chữa là rất hữu ích Excel thiệt hại nếu không tất cả công việc chưa được sao lưu sẽ là lost.
Giới thiệu tác giả:
Felix Hooker là một chuyên gia phục hồi dữ liệu trong DataNumen, Inc., công ty hàng đầu thế giới về công nghệ khôi phục dữ liệu, bao gồm sửa rar và các sản phẩm phần mềm phục hồi sql. Để biết thêm thông tin, hãy truy cập www.datanumennăm



