Làm cách nào để chạy nhiều macro từ menu chuột phải trong Excel?
Nếu có nhiều macro vba trong sổ làm việc của bạn, bạn nên mở cửa sổ VBA và sau đó chọn macro khi bạn cần chạy mã. Trong bài viết này, tôi muốn nói về cách chạy macro từ menu chuột phải để làm cho công việc của bạn hiệu quả hơn như hình minh họa bên trái.
Chạy nhiều macro từ menu chuột phải với mã VBA
Để chạy mã macro trong sổ làm việc từ menu chuột phải, các bước sau có thể giúp bạn, vui lòng thực hiện như sau:
1. Lỗ xuống Alt + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.
2. Sau đó, nhấp đúp vào Sổ làm việc này ở bên trái Dự án , sau đó sao chép và dán mã VBA bên dưới vào mô-đun trống.
Private Sub Workbook_Open()
Run "LoadMacro"
End Sub
Private Sub Workbook_Activate()
Run "LoadMacro"
End Sub
Private Sub Workbook_Deactivate()
Run "ClearMacro"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Run "ClearMacro"
ThisWorkbook.Save
End Sub
3. Vẫn trong Microsoft Visual Basic cho các ứng dụng cửa sổ, vui lòng nhấp vào Chèn > Mô-đunvà dán mã sau vào mô-đun này.
Private Sub LoadMacro()
Dim xArrMenu As Variant
Dim xStrLine, xSreBtnName As String
Dim xObjCBCF, xObjCntrAll As CommandBarControl
Dim xObjCBCs As CommandBars
Dim xObjCBBtn As CommandBarButton
Dim xIntLine, xFNum As Integer
Dim xObjComponent As Object
Run "ClearMacro"
Set xObjCBCF = Application.CommandBars("Cell").Controls.Add(msoControlPopup, before:=1)
xObjCBCF.Caption = " Run Macro "
xObjCBCF.BeginGroup = False
For Each xObjComponent In ActiveWorkbook.VBProject.VBComponents
If xObjComponent.Type = 1 Then
For xIntLine = 1 To xObjComponent.CodeModule.CountOfLines
xStrLine = xObjComponent.CodeModule.Lines(xIntLine, 1)
xStrLine = Trim(xStrLine)
If (InStr(xStrLine, "()") > 0) And (Left(xStrLine, 11) = "Private Sub" Or Left(xStrLine, 3) = "Sub") Then
xSreBtnName = ""
If "Private Sub" = Left(xStrLine, 11) Then
xSreBtnName = Trim(Mid(xStrLine, 12, InStr(xStrLine, "()") - 12))
ElseIf "Sub" = Left(xStrLine, 3) Then
xSreBtnName = Trim(Mid(xStrLine, 4, InStr(xStrLine, "()") - 4))
End If
If xSreBtnName <> "" And xSreBtnName <> "RightClickReset" And xSreBtnName <> "LoadMacro" And xSreBtnName <> "ActionMacro" Then
Set xObjCBBtn = xObjCBCF.Controls.Add
With xObjCBBtn
.FaceId = 186
.Style = msoButtonIconAndCaption
.Caption = xSreBtnName
.OnAction = "ActionMacro"
End With
End If
End If
Next xIntLine
End If
Next xObjComponent
End Sub
Private Sub ClearMacro()
On Error Resume Next
CommandBars("Cell").Controls(" Run Macro ").Delete
Err.Clear
CommandBars("Cell").Reset
End Sub
Private Sub ActionMacro()
On Error GoTo Err1
With Application
Run .CommandBars("Cell").Controls(1).Controls(.Caller(1)).Caption
End With
Exit Sub
Err1:
MsgBox "Invalid"
End Sub
4. Sau khi dán mã, hãy nhấp vào CÔNG CỤ > dự ánVà Tài liệu tham khảo-VBAProject hộp thoại được hiển thị, sau đó kiểm tra Khả năng mở rộng Microsoft Visual Basic cho Ứng dụng 5.3 tùy chọn trong Tài liệu tham khảo có sẵn hộp danh sách, xem ảnh chụp màn hình:
5. Sau đó nhấn vào OK để thoát khỏi hộp thoại, bây giờ, bạn nên lưu sổ làm việc này dưới dạng Sổ làm việc hỗ trợ macro Excel định dạng, xem ảnh chụp màn hình:
6. Cuối cùng, vui lòng khởi động lại sổ làm việc để mã có hiệu lực và bây giờ, khi bạn nhấp chuột phải vào một ô, Chạy Macro tùy chọn được chèn vào menu chuột phải và tất cả các macro trong sổ làm việc của bạn được liệt kê trong menu con như ảnh chụp màn hình sau:
7. Sau đó, bạn có thể chạy mã chỉ bằng cách nhấp vào nó.