Astuce: Les autres langues sont Google-Traduction. Vous pouvez visiter le English version de ce lien.
Se connecter
x
or
x
x
S'enregistrer
x

or

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

doc clic droit macros 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é à gauche.

Exécuter plusieurs macros à partir du menu contextuel avec les codes VBA


Exécuter plusieurs macros à partir du menu contextuel avec les 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. Arrêtez le Alt + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2. Ensuite, double-cliquez ThisWorkbook à 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 clic droit macros 1

3. Toujours dans le Microsoft Visual Basic pour applications fenêtre, s'il vous plaît cliquez 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 clic droit macros 2

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

doc clic droit macros 3

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

doc clic droit macros 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 suit:

doc clic droit macros 5

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


Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.

Be the first to comment.