Edastage argumente makrodele nuppudest ja menüüdest, kasutades Microsoft Excelis VBA -d

Anonim

Allolev näide näitab, kuidas saate luua käsuriba nuppe/menüüsid, mis edastavad makrole ühe või mitu argumenti.
näide näitab ka seda, kuidas saate lahtri otseteemenüüsse uue elemendi lisada.

Sub AddCommandToCellShortcutMenu () Dim i As Integer, ctrl kui CommandBarButton DeleteAllCustomControls "kustuta juhtelemendid, kui need juba olemas on" loo uued juhtelemendid rakendusega Application.CommandBars (25) "lahtri otseteemenüü" lisage tavaline käsuklahv Set ctrl = .Controls.Add (msoControlButton,,,, True) Ctrl .BeginGroup = True .Caption = "Uus menüü1" .FaceId = 71 .State = msoButtonUp .Style = msoButtonIconAndCaption .Tag = "TESTTAG1" .OnAction = "MyMacroName2 nupp, mis edastab ühe stringi argumendi Määra ctrl = .Controls.Add (msoControlButton,,,, True) Paigutusega ctrl .BeginGroup = False .Caption = "Uus menüü2" .FaceId = 72 .Style = msoButtonIconAndCaption .Tag = "TESTTAG2" .OnAction = "'MyMacroName2" "Uus menüü2" "" "Lõpeta' lisab nupu, mis läbib, läbib ühe stringi argumendi Määra ctrl = .Controls.Add (msoControlButton,,,, True) Ctrl .BeginGroup = False .Caption =" Uus Menüü3 ".FaceId = 73 .Style = msoButtonIconAndCaption .Tag =" TESTTAG3 ".OnAction = "'MyMacroName2" "" & .Caption & "" "'" End With "lisage nupp, mis edastab kaks argumenti, stringi ja täisarvu Set ctrl = .Controls.Add (msoControlButton,,,, True) Klahviga Ctrl. BeginGroup = False .Caption = "Uus menüü4" .FaceId = 74 .Style = msoButtonIconAndCaption .Tag = "TESTTAG4" .OnAction = "'MyMacroName3" "" & .Caption & "" ", 10'" End With End with Set ctrl = Nothing End Sub Sub DeleteAllCustomControls () 'kustuta juhtelemendid, kui need on juba olemas Dim i As Integer For i = 1 to 4 DeleteCustomCommandBarControl "TESTTAG" & i Next i End Sub Private Sub DeleteCustomCommandBarControl (CustomControlTag As String) "kustutab KÕIK CommandBar juhtelemendid Silt = CustomControlTag On Error Jätka Next Do Application.CommandBars.FindControl (,, CustomControlTag, False). Kustuta silmus kuni Application.CommandBars.FindControl (,, _ CustomControlTag, False) Is Nothing On Error GoTo 0 End Sub 'example makros käsuriba nupud Sub MyMacroName1 () MsgBox "Aeg on" & Format (Time, "h h: mm: ss ") Lõpeta alam alamnimi MyMacroName2 (valikuline MsgBoxCaption As String =" UNKNOWN ") MsgBox" Aeg on "& Format (Time," hh: mm: ss "),, _" See makro käivitati " & MsgBoxCaption lõpu alamjaotis MyMacroName3 (MsgBoxCaption stringina, DisplayValue täisarvuna) MsgBox "Aeg on" & Format (Time, "hh: mm: ss"),, _ MsgBoxCaption & "" & DisplayValue End Sub