L'esempio seguente mostra come creare pulsanti/menu CommandBar che passano uno o più argomenti a una macro.
l'esempio mostra anche come aggiungere un nuovo elemento al menu di scelta rapida della cella.
Sub AddCommandToCellShortcutMenu() Dim i As Integer, ctrl As CommandBarButton DeleteAllCustomControls ' elimina i controlli se esistono già ' crea i nuovi controlli With Application.CommandBars(25) ' il menu di scelta rapida della cella ' aggiungi un normale commandbarbutton Imposta ctrl = .Controls.Add (msoControlButton, , , , True) With ctrl .BeginGroup = True .Caption = "New Menu1" .FaceId = 71 .State = msoButtonUp .Style = msoButtonIconAndCaption .Tag = "TESTTAG1" .OnAction = "MyMacroName2" End With 'add a pulsante che passa un argomento stringa Set ctrl = .Controls.Add(msoControlButton, , , , True) With ctrl .BeginGroup = False .Caption = "New Menu2" .FaceId = 72 .Style = msoButtonIconAndCaption .Tag = "TESTTAG2" .OnAction = "'MyMacroName2 ""New Menu2""'" End With ' aggiunge un pulsante che passa un argomento stringa Set ctrl = .Controls.Add(msoControlButton, , , , True) With ctrl .BeginGroup = False .Caption = "Nuovo Menu3" .FaceId = 73 .Style = msoButtonIconAndCaption .Tag = "TESTTAG3" .OnAction = "'MyMacroName2 """ & .Caption & """'" End With ' aggiunge un pulsante che passa due argomenti, una stringa e un intero Set ctrl = .Controls.Add(msoControlButton, , , , True) With ctrl . BeginGroup = False .Caption = "New Menu4" .FaceId = 74 .Style = msoButtonIconAndCaption .Tag = "TESTTAG4" .OnAction = "'MyMacroName3 """ & .Caption & """, 10'" End With End With Set ctrl = Nothing End Sub DeleteAllCustomControls() ' elimina i controlli se esistono già Dim i As Integer For i = da 1 a 4 DeleteCustomCommandBarControl "TESTTAG" & i Next i End Sub Private Sub DeleteCustomCommandBarControl(CustomControlTag As String) ' elimina TUTTI i controlli CommandBar con Tag = CustomControlTag On Error Resume Next Do Application.CommandBars.FindControl(, , CustomControlTag, False).Delete Loop fino ad Application.CommandBars.FindControl(, , _ CustomControlTag, False) Is Nothing On Error GoTo 0 End Sub ' macro di esempio utilizzate da i pulsanti della barra dei comandi Sub MyMacroName1() MsgBox "L'ora è " & Format(Time, "h h:mm:ss") End Sub Sub MyMacroName2(Optional MsgBoxCaption As String = "UNKNOWN") MsgBox "L'ora è " & Format(Time, "hh:mm:ss"), , _ "Questa macro è stata avviata da " & MsgBoxCaption End Sub Sub MyMacroName3(MsgBoxCaption As String, DisplayValue As Integer) MsgBox "L'ora è " & Format(Time, "hh:mm:ss"), , _ MsgBoxCaption & " " & DisplayValue End Sub