Prenesite argumente makronaredbama s gumba i izbornika pomoću VBA u programu Microsoft Excel

Anonim

Primjer u nastavku prikazuje kako možete stvoriti gumbe/izbornike CommandBar koji prosljeđuju jedan ili više argumenata makronaredbi.
primjer također pokazuje kako možete dodati novu stavku u izbornik Prečaci ćelije.

Sub AddCommandToCellShortcutMenu () Dim i Kao Integer, ctrl Kao CommandBarButton DeleteAllCustomControls 'izbrišite kontrole ako već postoje' stvorite nove kontrole pomoću Application.CommandBars (25) 'izbornik prečaca u ćeliji' dodajte običan gumb naredbene trake Postavi ctrl = .Controls.Add (msoControlButton,,,, True) Sa ctrl .BeginGroup = True .Caption = "Novi izbornik1". FaceId = 71 .State = msoButtonUp .Style = msoButtonIconAndCaption .Tag = "TESTTAG1" .OnAction = "MyMacroName" Add2 "MyMacroNa gumb koji prosljeđuje jedan argument niza Postavite ctrl = .Controls.Add (msoControlButton,,,, True) S ctrl .BeginGroup = False .Caption = "Novi izbornik2". FaceId = 72 .Style = msoButtonIconAndCaption .Tag = "TESTTAG2" .OnAction = "'MyMacroName2" "Novi izbornik2" "" "Završi s" dodavanjem gumba koji prolazi prosljeđuje jedan argument niza Postavite ctrl = .Controls.Add (msoControlButton,,,, True) s ctrl .BeginGroup = False .Caption = "Novo Izbornik 3 ". FaceId = 73. Stil = msoButtonIconAndCaption .Tag =" TESTTAG3 ". Operacija = "'MyMacroName2" "" & .Caption & "" "' '" End With "dodajte gumb koji prosljeđuje dva argumenta, niz i cijeli broj. Postavi ctrl = .Controls.Add (msoControlButton,,,, True) Sa ctrl. BeginGroup = false. = Ništa Kraj Sub Sub DeleteAllCustomControls () 'izbrišite kontrole ako već postoje Dim i As Integer For i = 1 To 4 DeleteCustomCommandBarControl "TESTTAG" & i Next i End Sub Private Sub DeleteCustomCommandBarControl (CustomControlTag As String)' briše SVE naredbe CommandBar Oznaka = CustomControlTag pri pogrešci Nastavi dalje Slijedi Uradi Application.CommandBars.FindControl (,, CustomControlTag, False). Izbriši petlju do Application.CommandBars.FindControl (,, _ CustomControlTag, False) Ništa nije pogrešno GoTo 0 End Sub 'makroi koriste tipke na komandnoj traci Sub MyMacroName1 () MsgBox "Vrijeme je" & Format (Vrijeme, "h h: mm: ss ") End Sub Sub MyMacroName2 (Opcionalno MsgBoxCaption As String =" UNKNOWN ") MsgBox" The time is "& Format (Time," hh: mm: ss "),, _" Ovaj je makro pokrenut od " & MsgBoxCaption Kraj Sub Sub MyMacroName3 (MsgBoxCaption As String, DisplayValue As Integer) MsgBox "The time is" & Format (Time, "hh: mm: ss"), _ MsgBoxCaption & "" & DisplayValue End Sub