Прескочи на основното съдържание

Как да стартирате множество макроси от менюто с десен бутон в Excel?

Автор: Xiaoyang Последна промяна: 2019-03-20
doc макроси с десен бутон 5

Ако във вашата работна книга има няколко макроса vba, трябва да отворите прозореца на VBA и след това да изберете макроса, когато трябва да изпълните кода. В тази статия бих искал да говоря за това как да стартирате макроси от менюто с десен бутон, за да направите работата си по-ефективна, както е показано на лявата екранна снимка.

Стартирайте множество макроси от менюто с десен бутон с VBA кодове


Стартирайте множество макроси от менюто с десен бутон с VBA кодове

За да изпълните макро кодовете в рамките на работна книга от менюто с десен бутон, следните стъпки може да ви помогнат, моля, направете следното:

1. Дупка надолу Alt + F11 за да отворите Microsoft Visual Basic за приложения прозорец.

2. След това щракнете два пъти Тази работна книга вляво Проект прозорец и след това копирайте и поставете кода на 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 за приложения прозорец, моля щракнете Поставете > Модулии поставете следния код в този модул.

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. Най-накрая, моля, рестартирайте работната книга, за да се приложи ефектът на кодовете, и сега, когато щракнете с десния бутон върху клетка, a Стартирайте Macro опция се вмъква в менюто с десен бутон и всички макроси във вашата работна книга са изброени в подменюто като следната екранна снимка:

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