Macro toevoegen aan contextmenu

Macro toevoegen aan contextmenu

11 oktober 2021 0 Door Björn Meijer

Maak je vaak gebruik van een bepaalde macro, dan kan het handig zijn om deze toe te voegen aan het contextmenu (het menu dat tevoorschijn floept wanneer je met de rechtermuisknop klikt op een cel).

Open hiervoor de VBA-editor en plaats onderstaande code in ThisWorkbook.

Private Sub Workbook_Open()

Dim MyContextMenu As Object

Set MyContextMenu = Application.ShortcutMenus(xlWorksheetCell) _
    .MenuItems.AddMenu("My Custom Menu Item", 1)

With MyContextMenu.MenuItems
    .Add "Swap Two Cells", "SwapTwoCells", , 1, , ""
    .Add "My macro 2", "MyMacro2", , 2, , ""
End With

Set MyContextMenu = Nothing

End Sub

Bovenstaande code maakt een menu-item op de bovenste regel met als label “My Custom Menu Item”. Vervolgens worden binnen dit menu-item twee macro’s toegevoegd:

  • SwapTwoCells (wordt weergegeven als Swap Two Cells);
  • MyMacro2 (wordt weergegeven als My macro 2).

Plaats onderstaande code in een module of onder bovenstaande code.
De SwapTwoCells-functie zorgt ervoor dat de waarden uit twee geselecteerde cellen met elkaar verwisseld worden.

Macro2 laat een messagebox zien met de melding “Macro2 from a contextmenu”.

Sub SwapTwoCells()
    Dim sHolder As String

    If Selection.Cells.Count = 2 Then
        With Selection
            sHolder = .Cells(1).formula
            If .Areas.Count = 2 Then  ' Cells selected using Ctrl key
                .Areas(1).formula = .Areas(2).formula
                .Areas(2).formula = sHolder
            Else                      ' Adjacent cells are selected
                .Cells(1).formula = .Cells(2).formula
                .Cells(2).formula = sHolder
            End If
        End With
    Else
        MsgBox "Select only TWO cells to swap", vbCritical
    End If
End Sub

Public Sub mymacro2()

MsgBox "Macro2 from a contextmenu"

End Sub

Sluit je Excel-document en sla het op. Zodra je deze opnieuw opent is er een extra menu-item toegevoegd aan je contextmenu.