Passer au contenu principal

Comment exécuter plusieurs macros à partir du menu contextuel dans Excel?

doc macros clic droit 5

S'il existe plusieurs macros vba dans votre classeur, vous devez ouvrir la fenêtre VBA, puis choisir la macro lorsque vous devez exécuter le code. Dans cet article, je voudrais parler de la façon d'exécuter des macros à partir du menu contextuel pour rendre votre travail plus efficace, comme illustré sur la capture d'écran de gauche.

Exécutez plusieurs macros à partir du menu contextuel avec des codes VBA


Exécutez plusieurs macros à partir du menu contextuel avec des codes VBA

Pour exécuter les codes de macro dans un classeur à partir du menu contextuel, les étapes suivantes peuvent vous aider, procédez comme suit:

1. Trou dans le Alt + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2. Ensuite, double-cliquez Ce classeur à gauche Projet volet, puis copiez et collez le code VBA ci-dessous dans le module vide.

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 macros clic droit 1

3. Toujours dans le Microsoft Visual Basic pour applications fenêtre, veuillez cliquer insérer > Moduleet collez le code suivant dans ce module.

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 macros clic droit 2

4. Après avoir collé les codes, cliquez sur Outils > BibliographieEt un Références-VBAProject boîte de dialogue s'affiche, puis cochez Extensibilité de Microsoft Visual Basic pour Applications 5.3 option dans la Références disponibles zone de liste, voir capture d'écran:

doc macros clic droit 3

5. Puis clique OK pour quitter la boîte de dialogue, vous devez maintenant enregistrer ce classeur sous Cahier de travail Excel avec macro-activé format, voir capture d'écran:

doc macros clic droit 4

6. Enfin, veuillez redémarrer le classeur pour prendre l'effet des codes, et maintenant, lorsque vous cliquez avec le bouton droit sur une cellule, un Exécuter une macro L'option est insérée dans le menu contextuel et toutes les macros de votre classeur sont répertoriées dans le sous-menu comme la capture d'écran suivante:

doc macros clic droit 5

7. Ensuite, vous pouvez exécuter le code simplement en cliquant dessus.


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