Trước Excel 2007, các lập trình viên VBA đã sử dụng đối tượng CommandBar để tạo menu tùy chỉnh, thanh công cụ tùy chỉnh và menu phím tắt tùy chỉnh (nhấp chuột phải). Bắt đầu với Excel 2007, đối tượng CommandBar ở một vị trí khá kỳ lạ. Nếu bạn viết mã để tùy chỉnh menu hoặc thanh công cụ, Excel sẽ chặn mã đó và bỏ qua nhiều lệnh của bạn.
Thay vì hiển thị cải tiến giao diện đã được cân nhắc kỹ lưỡng của bạn, Excel 2007 (giống như các phiên bản mới hơn) chỉ cần đưa các menu và thanh công cụ tùy chỉnh của bạn vào một tab Ribbon tổng hợp có tên là Add-Ins.
Các tùy chỉnh menu và thanh công cụ kết thúc trong nhóm Bổ trợ → Menu Lệnh hoặc nhóm Bổ trợ → Thanh công cụ tùy chỉnh. Nhưng việc tùy chỉnh các menu lối tắt (cũng sử dụng đối tượng CommandBar) vẫn hoạt động như mọi khi - tốt, đại loại vậy.
Điểm mấu chốt? Đối tượng CommandBar không còn hữu ích nữa, nhưng nó vẫn là cách duy nhất để tùy chỉnh các menu lối tắt.
Thêm một mục mới vào menu phím tắt Ô
Dưới đây, bạn sẽ tìm thấy mã mẫu thêm một mục mới vào menu lối tắt xuất hiện khi bạn nhấp chuột phải vào một ô. Bạn sẽ có thể điều chỉnh những ví dụ này cho phù hợp với nhu cầu của mình.
Bạn có thể nâng cao tiện ích Change Case đó một chút bằng cách cung cấp nó từ menu phím tắt Ô.
Thủ tục AddToShortcut thêm một mục menu mới vào menu phím tắt Ô. Bạn có thể điều chỉnh nó để trỏ tới macro của riêng bạn bằng cách thay đổi các thuộc tính Caption và OnAction của đối tượng có tên NewControl.
Sub AddToShortCut ()
Dim Bar As CommandBar
Dim NewControl As CommandBarButton
DeleteFromShortcut
Set Bar = Application.CommandBars (“Ô”)
Đặt NewControl = Bar.Controls.Add _
(Nhập: = msoControlButton, ID: = 1, _
tạm thời: = Đúng)
Với NewControl
.Caption = “& Thay đổi trường hợp”
.OnAction = “ChangeCase”
.Style = msoButtonIconAndCaption
Kết thúc với
Kết thúc Sub
Khi bạn sửa đổi menu lối tắt, sửa đổi đó vẫn có hiệu lực cho đến khi bạn khởi động lại Excel. Nói cách khác, các menu lối tắt đã sửa đổi không tự đặt lại khi bạn đóng sổ làm việc có chứa mã VBA. Do đó, nếu bạn viết mã để sửa đổi menu lối tắt, bạn hầu như luôn viết mã để đảo ngược tác dụng của sửa đổi của mình.
Thủ tục DeleteFromShortcut xóa mục menu mới khỏi menu phím tắt Ô:
Sub DeleteFromShortcut ()
Khi có lỗi Tiếp tục lại tiếp theo
Application.CommandBars (“Ô”). Điều khiển _
(“& Thay đổi trường hợp”). Xóa
Kết thúc Sub
Điều này cho thấy mục menu mới hiển thị như thế nào sau khi bạn bấm chuột phải vào một ô.
Menu lối tắt Ô hiển thị một mục menu tùy chỉnh: Thay đổi trường hợp.
Lệnh thực sự đầu tiên sau khi khai báo một vài biến gọi thủ tục DeleteFromShortcut. Câu lệnh này đảm bảo rằng chỉ một mục menu Trường hợp Thay đổi xuất hiện trên menu Ô lối tắt. Hãy thử nhận xét dòng đó (đặt một dấu nháy đơn ở đầu dòng) và chạy quy trình một vài lần - nhưng đừng vội vàng!
Bấm chuột phải vào một ô và bạn có thể thấy nhiều bản sao của mục menu Trường hợp Thay đổi. Loại bỏ tất cả các mục bằng cách chạy DeleteFromShortcut nhiều lần (một lần cho mỗi mục menu bổ sung).
Cuối cùng, bạn cần một cách để thêm mục menu lối tắt khi sổ làm việc được mở và để xóa mục menu khi đóng sổ làm việc. Làm điều này rất dễ dàng. Chỉ cần thêm hai thủ tục sự kiện này vào mô-đun mã ThisWorkbook:
Private Sub Workbook_Open ()
Gọi AddToShortCut
Kết thúc Sub
Private Sub Workbook_BeforeClose (Cancel As Boolean)
Gọi DeleteFromShortcut
Kết thúc Sub
Thủ tục Workbook_Open được thực thi khi sổ làm việc được mở và thủ tục Workbook_BeforeClose được thực thi trước khi đóng sổ làm việc. Chỉ cần những gì bác sĩ đã ra lệnh.
Excel 2013 và Excel 2016 có gì khác nhau?
Nếu bạn đã sử dụng VBA để làm việc với menu lối tắt trong Excel 2007 hoặc phiên bản cũ hơn, bạn cần lưu ý về một sự thay đổi đáng kể.
Trước đây, nếu mã của bạn sửa đổi menu lối tắt, thì sửa đổi đó sẽ có hiệu lực đối với tất cả các sổ làm việc. Ví dụ: nếu bạn đã thêm một mục mới vào menu chuột phải vào Ô, mục mới đó sẽ xuất hiện khi bạn bấm chuột phải vào một ô trong bất kỳ sổ làm việc nào (cộng với các sổ làm việc khác mà bạn mở sau này). Nói cách khác, các sửa đổi menu phím tắt đã được thực hiện ở cấp ứng dụng .
Excel 2013 và Excel 2016 sử dụng một giao diện tài liệu duy nhất và điều đó ảnh hưởng đến các menu lối tắt. Những thay đổi bạn thực hiện đối với menu lối tắt chỉ ảnh hưởng đến cửa sổ sổ làm việc đang hoạt động. Khi bạn thực thi mã sửa đổi menu lối tắt, menu lối tắt cho các cửa sổ khác với cửa sổ đang hoạt động sẽ không bị thay đổi. Đây là một sự khác biệt hoàn toàn so với cách mọi thứ đã từng hoạt động.
Một cách khác: Nếu người dùng mở một sổ làm việc (hoặc tạo một sổ làm việc mới) khi cửa sổ đang hoạt động hiển thị menu lối tắt đã sửa đổi, thì sổ làm việc mới cũng hiển thị menu lối tắt đã sửa đổi. Nói cách khác, các cửa sổ mới hiển thị các menu lối tắt giống như cửa sổ đã hoạt động khi các cửa sổ mới được mở.
Điểm mấu chốt: Trước đây, nếu bạn mở một sổ làm việc hoặc phần bổ trợ có các menu lối tắt được sửa đổi, bạn có thể yên tâm rằng các menu lối tắt đã sửa đổi sẽ có sẵn trong tất cả các sổ làm việc. Bạn không còn có sự đảm bảo đó nữa.
Tạo menu lối tắt tùy chỉnh trong Access 2007
Cửa sổ thiết kế macro trong Access 2007 sẽ khác so với các phiên bản mới hơn, vì vậy hãy mở rộng các phần sau để theo dõi nếu bạn đang sử dụng Access 2007.
Bước 1 cho Access 2007: Tạo nhóm macro chứa các lệnh menu
Trong bước này, bạn tạo một nhóm macro, mỗi macro trong số đó sẽ là một lệnh riêng biệt trên menu lối tắt của bạn.
Nhóm vĩ mô là gì?
Nhóm macro là một đối tượng macro duy nhất có chứa hai hoặc nhiều macro độc lập. Các macro riêng lẻ được xác định bằng cách nhập tên cho từng macro trong cột Tên Macro. Trong hình minh họa sau, Macro3 là một nhóm macro. NotFoundMsg và FoundMsg là các macro riêng lẻ trong nhóm, mỗi macro bao gồm hai hành động macro.
Lưu ý: Cột Tên Macro bị ẩn theo mặc định. Để hiển thị cột Tên Macro , trên tab Thiết kế , trong nhóm Hiển thị/Ẩn , bấm vào Tên Macro .
-
Trên tab Tạo , trong nhóm Khác , bấm vào Macro . Nếu lệnh này không khả dụng, hãy bấm vào mũi tên bên dưới nút Mô-đun hoặc Mô-đun lớp , rồi bấm vào Macro .
-
Trên tab Thiết kế , trong nhóm Hiển thị/Ẩn , bấm vào Tên Macro để hiển thị cột Tên Macro .
-
Đối với mỗi lệnh bạn muốn trên Menu Phím tắt tùy chỉnh:
-
Trong cột Tên Macro , nhập văn bản bạn muốn hiển thị trên menu phím tắt (ví dụ: "In báo cáo" hoặc "Lưu").
Lưu ý: Để tạo khóa truy cập để bạn có thể sử dụng bàn phím để chọn lệnh, hãy nhập ký hiệu (&) trước chữ cái mà bạn muốn làm khóa truy cập trong tên lệnh (ví dụ: "&Save"). Chữ cái này sẽ được gạch chân trên menu.
-
Trong cột Hành động , chọn hành động đầu tiên bạn muốn thực hiện khi nhấp vào lệnh trên menu chuột phải.
-
Nếu có nhiều hành động bạn muốn thực hiện hơn khi chọn lệnh này, hãy thêm chúng vào các dòng tiếp theo. Đối với mỗi hành động tiếp theo, hãy để trống ô Tên Macro .
Lưu ý: Để tạo một dòng giữa hai lệnh menu, hãy nhập dấu gạch nối (-) vào cột Tên Macro giữa các lệnh menu thích hợp.
-
Lưu và đặt tên cho macro, ví dụ: mcrShortcutMenuCommands .
Hình minh họa sau đây hiển thị một nhóm macro mẫu cho menu tùy chỉnh hoặc menu lối tắt.
Bước 2 cho Access 2007: Tạo macro tạo menu
Bước này có vẻ dư thừa nhưng để tạo menu lối tắt từ nhóm macro mà bạn đã tạo ở Bước 1, bạn phải tạo macro thứ hai có chứa hành động macro AddMenu . Macro này đôi khi được gọi là "macro menu".
-
Trên tab Tạo , trong nhóm Khác , bấm vào Macro . Nếu lệnh này không khả dụng, hãy bấm vào mũi tên bên dưới nút Mô-đun hoặc Mô-đun lớp , rồi bấm vào Macro .
-
Trên dòng đầu tiên của macro, chọn AddMenu trong danh sách Hành động .
-
Trong Đối số hành động , trong hộp Tên menu , nhập tên của menu (ví dụ: "Lệnh báo cáo"). Đối số này không bắt buộc nhưng được khuyến nghị nếu ở Bước 3, bạn dự định thêm menu vào tab Ribbon (chẳng hạn như tab Bổ trợ của biểu mẫu hoặc báo cáo). Nếu menu được thêm dưới dạng menu lối tắt ở Bước 3, đối số Tên Menu sẽ bị bỏ qua.
-
Trong hộp Tên Macro Menu , nhập tên macro mà bạn đã tạo ở Bước 1.
-
Lưu và đặt tên cho macro, ví dụ: mcrAddShortcutMenu .
Hình minh họa sau đây hiển thị macro menu mẫu tạo menu mà chúng tôi đã thiết kế ở Bước 1.
Bước 3 cho Access 2007: Đính kèm menu vào điều khiển, biểu mẫu, báo cáo hoặc cơ sở dữ liệu
Tùy thuộc vào nơi bạn muốn menu xuất hiện, hãy sử dụng một hoặc nhiều quy trình sau.
-
Thêm menu vào tab Bổ trợ của biểu mẫu hoặc báo cáo
Hãy sử dụng quy trình này nếu bạn muốn menu xuất hiện trên tab Phần bổ trợ cho một biểu mẫu hoặc báo cáo cụ thể, như minh họa trong hình minh họa sau:
-
Trong Ngăn Dẫn hướng, bấm chuột phải vào biểu mẫu hoặc báo cáo nơi bạn muốn menu xuất hiện, rồi bấm Dạng xem Thiết kế .
-
Trên tab Thiết kế , trong nhóm Hiển thị/Ẩn , bấm vào Trang Thuộc tính .
-
Chọn toàn bộ đối tượng bằng cách chọn Biểu mẫu hoặc Báo cáo từ danh sách ở đầu ngăn tác vụ Trang thuộc tính.
-
Trên tab Khác trên Trang Thuộc tính, trong hộp thuộc tính Menu Phím tắt , nhập tên macro mà bạn đã tạo ở Bước 2 (trong ví dụ này là “mcrAddShortcutMenu”).
Lần tiếp theo bạn mở biểu mẫu hoặc báo cáo, tab Phần bổ trợ sẽ xuất hiện trong Dải băng. Nhấp vào tab để xem menu.
Để biết thêm thông tin về kỹ thuật tùy chỉnh Ribbon, chẳng hạn như thêm tab tùy chỉnh hoặc ẩn tab mặc định, hãy xem bài viết Tạo ribbon tùy chỉnh trong Access .
Ribbon là một thành phần của giao diện người dùng Microsoft Office Fluent.
-
Thêm menu làm menu lối tắt cho biểu mẫu, báo cáo hoặc điều khiển
Sử dụng quy trình này nếu bạn muốn menu xuất hiện khi bạn bấm chuột phải vào một biểu mẫu, báo cáo hoặc điều khiển cụ thể, như minh họa trong hình minh họa sau:
-
Trong Ngăn Dẫn hướng, bấm chuột phải vào biểu mẫu hoặc báo cáo nơi bạn muốn menu lối tắt xuất hiện, rồi bấm Dạng xem Thiết kế .
-
Trên tab Thiết kế , trong nhóm Hiển thị/Ẩn , bấm vào Trang Thuộc tính .
-
Chọn điều khiển hoặc đối tượng mà bạn muốn đính kèm menu lối tắt.
Lưu ý: Để chọn toàn bộ đối tượng, hãy chọn Biểu mẫu hoặc Báo cáo từ danh sách ở đầu ngăn tác vụ Trang Thuộc tính.
-
Trên tab Khác trên Trang Thuộc tính, trong hộp thuộc tính Thanh Menu Phím tắt , nhập tên macro mà bạn đã tạo ở Bước 2 (trong ví dụ này là “mcrAddShortcutMenu”).
-
Thêm menu làm menu lối tắt chung
Quy trình này thay thế tất cả các menu lối tắt mặc định trong cơ sở dữ liệu hiện tại. Các menu lối tắt tùy chỉnh mà bạn đã đính kèm vào các biểu mẫu, báo cáo hoặc điều khiển cụ thể sẽ không bị ảnh hưởng.
-
Bấm vào Nút Microsoft Office rồi bấm vào Tùy chọn truy cập .
-
Trong hộp thoại Tùy chọn Access , bấm vào Cơ sở dữ liệu hiện tại .
-
Trong Tùy chọn Dải băng và Thanh công cụ , trong hộp Thanh Menu Phím tắt , nhập tên macro mà bạn đã tạo ở Bước 2 (trong ví dụ này là “mcrAddShortcutMenu”).
-
Các menu lối tắt tùy chỉnh thay thế các menu lối tắt mặc định cho các đối tượng mà chúng được đính kèm. Nếu bạn muốn giữ lại một số lệnh Access nhất định để sử dụng trên các menu này, hãy sử dụng hành động RunCommand để đặt các lệnh vào nhóm macro cho các menu mà bạn muốn đưa chúng vào.
-
Menu lối tắt tùy chỉnh được gắn vào điều khiển sẽ thay thế mọi menu lối tắt tùy chỉnh khác được xác định trong cơ sở dữ liệu. Menu lối tắt tùy chỉnh được đính kèm vào biểu mẫu hoặc báo cáo sẽ thay thế menu lối tắt chung tùy chỉnh.
-
Khi bạn chỉ định macro menu cho biểu mẫu hoặc báo cáo hoặc cho cơ sở dữ liệu, Access sẽ chạy macro menu này bất cứ khi nào biểu mẫu, báo cáo hoặc cơ sở dữ liệu được mở. Nếu bạn thực hiện thay đổi đối với macro menu hoặc nhóm macro xác định các lệnh của nó trong khi biểu mẫu, báo cáo hoặc cơ sở dữ liệu đang mở, bạn phải đóng biểu mẫu, báo cáo hoặc cơ sở dữ liệu đó rồi mở lại để xem các thay đổi.
-
Để tạo menu con, hãy làm theo Bước 1 để tạo một nhóm macro riêng biệt chỉ chứa các lệnh menu con. Sau đó, thực hiện lại Bước 1 để xác định các lệnh cho menu cấp cao hơn. Thêm menu con dưới dạng một mục trong nhóm macro cấp cao hơn bằng cách sử dụng hành động macro AddMenu . Hình minh họa sau đây hiển thị nhóm macro cho menu chứa menu con, sau đó hiển thị menu lối tắt kết quả. Dòng thứ ba trong nhóm macro tạo menu con Xuất sang... ( mcrSubMenu ).
Bạn có thể tạo nhiều cấp độ menu con bằng cách sử dụng hành động AddMenu trong nhóm macro cho từng cấp độ menu. Đảm bảo cung cấp giá trị cho đối số Tên menu cho mỗi hành động AddMenu , nếu không menu con sẽ xuất hiện dưới dạng dòng trống trong menu cấp cao hơn.
-
Điều kiện macro chỉ được hỗ trợ trong macro menu cấp cao nhất. Nói cách khác, bạn có thể sử dụng một điều kiện trong macro menu để xác định xem một menu cụ thể hoặc menu lối tắt có được hiển thị hay không, nhưng chỉ dành cho các menu ở cấp cao nhất. Bạn không thể sử dụng điều kiện để hiển thị hoặc ẩn lệnh hoặc menu con trên menu. Bạn cũng có thể sử dụng một điều kiện để ẩn hoặc hiển thị menu phím tắt tùy chỉnh hoặc menu phím tắt chung.
-
Tùy chọn, macro menu mà bạn tạo ở Bước 2 có thể là một phần của nhóm macro. Ví dụ: nếu bạn có một số menu lối tắt cho các đối tượng hoặc điều khiển khác nhau, bạn có thể tạo một đối tượng macro duy nhất chứa tất cả các macro menu cần thiết. Đảm bảo hiển thị cột Tên Macro và nhập tên duy nhất cho mỗi macro. Ở Bước 3, hãy sử dụng ký hiệu sau để tham chiếu đến macro: macrogroupname.macroname . Ví dụ: mcrAddShortcutMenus.AddMenu2 .