跳到主要內容

如何從Excel的右鍵菜單運行多個宏?

doc右鍵單擊宏5

如果您的工作簿中有多個vba宏,則應打開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

doc右鍵單擊宏1

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

doc右鍵單擊宏2

4。 粘貼代碼後,然後單擊 工具 > 參考參考文獻-VBAProject 顯示對話框,然後檢查 Microsoft Visual Basic應用程序可擴展性5.3 在選項 可用參考 列錶框,請參見屏幕截圖:

doc右鍵單擊宏3

5。 然後點擊 OK 要退出對話框,現在,您應該將此工作簿另存為 Excel啟用宏的工作簿 格式,請參見屏幕截圖:

doc右鍵單擊宏4

6。 最後,請重新啟動工作簿以使代碼生效,現在,當您右鍵單擊單元格時, 運行宏 選項插入到右鍵單擊菜單中,並且子菜單中列出了工作簿中的所有宏,如以下屏幕截圖所示:

doc右鍵單擊宏5

7。 然後,您只需單擊即可運行代碼。


Comments (0)
No ratings yet. Be the first to rate!
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations