Macro shortcut trong Excel

Liên hệ QC

levanduyet

Hãy để gió cuốn đi.
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,798
Được thích
4,705
Giới tính
Nam
Tôi biết chắc chắn rằng trong chúng ta, đôi lúc các bạn cũng gặp vấn đề về macro shortcut, chính vì vậy tôi xin viết bài về vấn đề này. Các ví dụ được tác giả thực hiện trên Excel 2007 và lưu dưới định dạng Excel 2003.

Bây giờ các bạn hãy mở một tập tin Excel mới (Ctrl + N) và lưu dưới dạng Excel 2003. Giả sử tôi lưu với tên TestShortCut.xls
Tại ô B3 tôi nhập chuổi abc.

B1.jpg


Bạn hãy vào tab Developer.

B2.jpg


Nếu không thấy tab này thì bạn hãy cho hiện tab này bằng cách vào Excel Options

Và cho hiện nó bằng cách chọn vào Show Developer tab in the Ribbon

B3.jpg


B4.jpg


Tôi muốn tạo một macro sẽ làm chữ in đậm (bold).

Bây giờ tôi nhấn vào nút Record Macro

B5.jpg


Một hộp thoại khác sẽ xuất hiện yêu cầu bạn nhập vào các thông tin như: Macro name (tên macro), Shortcut key (phím tắt để gọi macro này), Store macro in (lưu macro này ở đâu – trong ví dụ chúng ta sẽ chọn This Workbook).

B6.jpg


Tôi nhập vào như sau:

Macro name: BoldText; Shortcut key: tôi chọn B (chữ hoa) tự động hệ thống sẽ tạo cho bạn shortcut là Ctrl+Shift+B. Sau đó các bạn nhấn nút OK.
Tại vị trí B3, bạn hãy chọn bold cho ô này (phím tắt là Ctrl + B). Sau đó bạn ngừng ghi macro bằng cách nhấn vào nút Stop Recording trên tab Developer hoặc trên thanh trạng thái như hình sau:

B7.jpg


B8.jpg


Bạn hãy vào cửa số VBE (Visual Basic for Editor – Nhấn tổ hợp phím Alt + F11 hoặc nhấn vào nút Visual Basic ở tab Developer hoặc thanh trạng thái) bạn sẽ thấy Excel sẽ tự tạo ra một module có tên là Module1, với đoạn code như hình sau:

B9.jpg


Các bạn sẽ hỏi, tại sao lại là Module1 không là một tên nào khác, cái này thì chờ tôi hỏi Mr.Bill Gate. Bạn có thể thay đổi tên của module này bằng cách thay đổi tên nó ở cửa số Properties (góc trái bên dưới như hình trên).

Nếu bạn tiếp tục tạo ra các macro khác thì các macro sẽ được lưu liên tục trong Module1 này.

Bây giờ các bạn hãy đóng tập tin này lại và mở ra. Tạo một macro khác, lưu lại, khi mở ra các bạn sẽ thấy Excel sẽ tự động tạo ra một module có tên là Module2 và lưu macro mới này ở đây.
Nào, các bạn hãy click phải vào Module1 và chọn Export File (hoặc vào File>Export File)

B10.jpg


B11.jpg


Nhớ lưu với tên Module1 trong cùng thư mục với tập tin Excel của chúng ta cho dễ dàng tham khảo.

Bây giờ các bạn hãy vào thư mục mới vừa lưu, chọn tập tin Module1.bas và mở với chương trình Notepad. (Click phải chuột chọn Open With rồi chọn Notepad).

B12.jpg


Các bạn sẽ thấy nội dung như sau:

B13.jpg


Bây giờ các bạn hãy xóa dòng
Mã:
Attribute BoldText.VB_ProcData.VB_Invoke_Func = “B\n14”
Và sau đó lưu lại.

Bước tiếp theo, các bạn hãy vào lại màn hình VBE, lập lại bước xuất Module1 ở trên nhưng với tên Module1_Luu.
Click phải chuột vào module Module1 và chọn Remove Module1.

Bây giờ các bạn lại Import Module chúng ta mới vừa sửa ở trên (xóa bớt hàng).

Các bạn hãy ra ngoài cửa sổ Excel và hãy thử Shortcut Ctrl + Shift + B, các bạn sẽ thấy rằng tổ hợp phím này không còn tác dụng.
Điều này nói lên hàng chúng ta vừa xóa lưu lại phím nóng của macro này.

Các bạn hãy thử mở lại tập tin Module1 mà chúng ta vừa xóa hàng này, nhập lại hàng này, lưu lại. Vào lại VBE, Import lại module này, các bạn sẽ thấy tổ hợp phím nóng để gọi macro này có tác dụng.

Có bạn sẽ hỏi, thế còn dòng chữ: Keyboard Shortcut: Ctrl+Shift+B có tác dụng gì?

Xin thưa đây chỉ là dòng ghi chú mà thôi.

B14.jpg


Đây chính là lý do, nếu bạn chỉ copy đoạn code này qua một module khác (mặc dù cái dòng ghi chú này) nhưng short cut sẽ không có tác dụng.

(Còn tiếp)

Lê Văn Duyệt
 
Lần chỉnh sửa cuối:
Chúng ta hãy đi tiếp.

Từ lưu ý ở trên chúng ta rút ra để đổi short cut này, chúng ta phải:
Cách 1: Từ cửa sổ Excel, nhấn tổ hợp phím Alt + F8. Cửa số Macro hiện ra

B15.jpg


sau đó các bạn hãy nhấn vào nút Options, cửa số Macro Options hiện ra,

B16.jpg


bạn hãy thay đổi phím nóng theo ý bạn và nhấn nút OK.

Bạn hãy vào kiểm tra đoạn code trong module1, các bạn vẫn thấy
Mã:
Sub BoldText()
'
' BoldText Macro
' Bold the text
'
' [COLOR="Red"]Keyboard Shortcut: Ctrl+Shift+B[/COLOR]
'
    Selection.Font.Bold = True
End Sub

Bây giờ bạn hãy trở về cửa sổ Excel và thử tổ hợp phím nóng bạn mới vừa tạo cho Macro này xem sao?
Dĩ nhiên là tổ hợp phím nóng bạn mới tạo ra có tác dụng.

Để kiểm tra Module1 này, bạn hãy thực hiện lại bước Export File ở trên, và mở bằng Notepad bạn sẽ thấy dòng
Mã:
Attribute BoldText.VB_ProcData.VB_Invoke_Func = "B\n14"
(Giả sử tôi thay đổi tổ hợp phím nóng là Ctrl + Shift + H) được thay đổi thành
Mã:
Attribute BoldText.VB_ProcData.VB_Invoke_Func = "H\n14"

Cách 2:
Các bạn hãy dùng Export File rồi sửa chữa tập tin module này trong Notepad, lưu lại rồi lại Import File module này vào.

Kế tiếp chúng ta hãy tạo tiếp hai macro để tạo chữ in nghiênggạch dưới với tổ hợp phím nóng lần lượt là Ctrl+Shift+I, Ctrl+Shift+U. Lưu lại và xuất ra, mở bằng Notepad bạn sẽ thấy các dòng lệnh tiếp theo như sau:

Mã:
Sub ItalicText()
Attribute ItalicText.VB_ProcData.VB_Invoke_Func = "I\n14"
'
' ItalicText Macro
'
' Keyboard Shortcut: Ctrl+Shift+I
'
    Selection.Font.Italic = True
End Sub
Sub UnderText()
Attribute UnderText.VB_ProcData.VB_Invoke_Func = "U\n14"
'
' UnderText Macro
'
' Keyboard Shortcut: Ctrl+Shift+U
'
    Selection.Font.Underline = xlUnderlineStyleSingle
End Sub

Vậy B\n14: là tổ hợp phím Ctrl+Shift+B
Nếu bạn thấy
Mã:
Attribute BoldText.VB_ProcData.VB_Invoke_Func = "i\n14"
Thì tổ hợp phím là Ctrl+i

Các bạn có thể download một add-in để lấy Shortcut tại đây.

Nếu muốn tổng hợp các macro từ nhiều module thì sao?
Bạn chỉ việc mở Notepad và đưa các đoạn code của macro các bạn vào đây ví dụ như đoạn dưới đây:
Mã:
1 Attribute VB_Name = "Module2"
2 Sub ItalicText()
3 Attribute ItalicText.VB_ProcData.VB_Invoke_Func = "I\n14"
4 '
5 ' ItalicText Macro
6 '
7 ' Keyboard Shortcut: Ctrl+Shift+I
8 '
9     Selection.Font.Italic = True
10 End Sub

Chú ý:
Dòng 1 là tên module. Dòng này bắt buộc phải có.
Dòng 3 sửa lại short cut theo ý của bạn. Chú ý, dòng ghi chú sẽ không có tác dụng mặc dù nó ghi là Keyboard Shortcut: Ctrl+Shift+I

Cuối cùng lưu lại với dạng *.bas. Sau đó mở cửa sổ VBE ra và Import File. Như vậy bạn có thể tổng hợp các Macro của mình lại trong cùng một module.


Lê Văn Duyệt
 
Lần chỉnh sửa cuối:
Upvote 0
vậy e muốn đặt chỉ 1 phím (ví dụ phím `) thì làm như nào ạ, thưa a?
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom