如何從Excel的右鍵菜單運行多個宏?
如果您的工作簿中有多個vba宏,則應打開VBA窗口,然後在需要運行代碼時選擇該宏。 在本文中,我想談談如何從右鍵單擊菜單運行宏以使您的工作更高效,如左圖所示。
使用VBA代碼從右鍵菜單運行多個宏
要從右鍵單擊菜單中運行工作簿中的宏代碼,以下步驟可能會為您提供幫助:
1。 向下鑽 Alt + F11鍵 鍵打開 Microsoft Visual Basic for Applications 窗口。
2。 然後,雙擊 的ThisWorkbook 在左邊 專案 窗格,然後將下面的VBA代碼複製並粘貼到空白模塊中。
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。 仍在 Microsoft Visual Basic for Applications 窗口,請點擊 插入 > 模塊,然後將以下代碼粘貼到該模塊中。
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。 粘貼代碼後,然後單擊 工具 > 參考, 參考文獻-VBAProject 顯示對話框,然後檢查 Microsoft Visual Basic應用程序可擴展性5.3 在選項 可用參考 列錶框,請參見屏幕截圖:
5。 然後點擊 OK 要退出對話框,現在,您應該將此工作簿另存為 Excel啟用宏的工作簿 格式,請參見屏幕截圖:
6。 最後,請重新啟動工作簿以使代碼生效,現在,當您右鍵單擊單元格時, 運行宏 選項插入到右鍵單擊菜單中,並且子菜單中列出了工作簿中的所有宏,如以下屏幕截圖所示:
7。 然後,您只需單擊即可運行代碼。