Odošlite argumenty makrám z tlačidiel a ponúk pomocou jazyka VBA v programe Microsoft Excel

Anonim

Nasledujúci príklad ukazuje, ako môžete vytvoriť tlačidlá/ponuky CommandBar, ktoré odovzdajú makru jeden alebo viac argumentov.
príklad tiež ukazuje, ako môžete do kontextovej ponuky Bunka pridať novú položku.

Sub AddCommandToCellShortcutMenu () Dim i As Integer, ctrl As CommandBarButton DeleteAllCustomControls 'delete the controls if they already exist' create the new controls With Application.CommandBars (25) 'the cell shortcut menu add an obyčejný commandbarbutton Set ctrl = .Controls.Add (msoControlButton,,,, True) S ctrl .BeginGroup = True .Caption = "New Menu1" .FaceId = 71 .State = msoButtonUp .Style = msoButtonIconAndCaption .Tag = "TESTTAG1" .OnAction = "MyMacroName2" tlačidlo, ktoré odovzdá jeden reťazcový argument Nastaviť ctrl = .Controls.Add (msoControlButton,,,, True) S ctrl .BeginGroup = False .Caption = "New Menu2" .FaceId = 72 .Style = msoButtonIconAndCaption .Tag = "TESTTAG2" .OnAction = "'MyMacroName2" "Nová Menu2" "'" "Koniec" pridať tlačidlo, ktoré prejde, prejde jeden reťazcový argument Set ctrl = .Controls.Add (msoControlButton,,,, True) With ctrl .BeginGroup = False .Caption = "New Menu3 ".FaceId = 73 .Style = msoButtonIconAndCaption .Tag =" TESTTAG3 ".OnAction = "'MyMacroName2" "" & .Caption & "" "" "" Koniec "pridá tlačidlo, ktoré odovzdá dva argumenty, reťazec a celé číslo Nastaviť ctrl = .Controls.Add (msoControlButton,,,, True) S ctrl. BeginGroup = False .Caption = "New Menu4" .FaceId = 74 .Style = msoButtonIconAndCaption .Tag = "TESTTAG4" .OnAction = "'MyMacroName3" "" & .Caption & "" ", 10'" Koniec s koncom s nastavením ctrl = Nothing End Sub Sub DeleteAllCustomControls () 'odstráni ovládacie prvky, ak už existujú Dim i As Integer For i = 1 až 4 DeleteCustomCommandBarControl "TESTTAG" & i Next i End Sub Private Sub DeleteCustomCommandBarControl (CustomControlTag As String)' vymaže VŠETKY ovládacie prvky CommandBar s Tag = CustomControlTag On Error Resume Next Do Application.CommandBars.FindControl (,, CustomControlTag, False). Odstrániť slučku, kým Application.CommandBars.FindControl (,, _ CustomControlTag, False) Nie je nič na chybe GoTo 0 End Sub 'príklad makier používaných tlačidlá na paneli príkazov Sub MyMacroName1 () MsgBox „Čas je“ & Formát (čas, „h h: mm: ss ") Sub Sub MyMacroName2 (voliteľné MsgBoxCaption As String =" NEZNÁME ") MsgBox" Čas je "& formát (čas," hh: mm: ss "),, _" Toto makro bolo spustené z " & MsgBoxCaption End Sub Sub MyMacroName3 (MsgBoxCaption As String, DisplayValue As Integer) MsgBox "The time is" & Format (Time, "hh: mm: ss"),, _ MsgBoxCaption & "" & DisplayValue End Sub