Perduokite argumentus makrokomandoms iš mygtukų ir meniu naudodami „Microsoft Excel“ VBA

Anonim

Žemiau pateiktame pavyzdyje parodyta, kaip galite sukurti „CommandBar“ mygtukus/meniu, kurie makrokomandai perduoda vieną ar daugiau argumentų.
pavyzdyje taip pat parodyta, kaip galite pridėti naują elementą į langelio nuorodų meniu.

Sub AddCommandToCellShortcutMenu () Dim i As Integer, ctrl As CommandBarButton DeleteAllCustomControls "ištrinkite valdiklius, jei jie jau yra", sukurkite naujus valdiklius su Application.CommandBars (25) "langelio spartusis meniu" pridėkite įprastą komandų klavišą Nustatykite ctrl = .Controls.Add (msoControlButton,,,, True) Naudojant ctrl .BeginGroup = True .Caption = "Naujas meniu1" .FaceId = 71 .State = msoButtonUp .Style = msoButtonIconAndCaption .Tag = "TESTTAG1" .OnAction = "MyMacro 'add2 mygtukas, kuris perduoda vieną eilutės argumentą Nustatykite ctrl = .Controls.Add (msoControlButton,,,, True) Su ctrl .BeginGroup = False .Caption = "Naujas meniu2" .FaceId = 72 .Style = msoButtonIconAndCaption .Tag = "TESTTAG2" .OnAction = "'MyMacroName2" "Naujas meniu2" "" "Pabaiga su" pridėti mygtuką, kuris praeina, perduoda vieną eilutės argumentą Nustatykite ctrl = .Controls.Add (msoControlButton,,,, True) Su ctrl .BeginGroup = False .Caption = "Naujas Menu3 ".FaceId = 73 .Style = msoButtonIconAndCaption .Tag =" TESTTAG3 ".OnAction = "'MyMacroName2" "" &. Caption & "" "'" Pabaiga su "pridėkite mygtuką, kuris perduoda du argumentus, eilutę ir sveikąjį skaičių. Nustatykite ctrl = .Controls.Add (msoControlButton,,,, True) Su ctrl. BeginGroup = False .Caption = "Naujas meniu4" .FaceId = 74 .Style = msoButtonIconAndCaption .Tag = "TESTTAG4" .OnAction = "'MyMacroName3" "" & .Caption & "" ", 10'" End With End With Set ctrl = Nothing End Sub Sub DeleteAllCustomControls () 'ištrinkite valdiklius, jei jie jau yra Žyma = CustomControlTag On Error Tęskite Toliau Do Application.CommandBars.FindControl (,, CustomControlTag, False). Ištrinkite ciklą iki Application.CommandBars.FindControl (,, _ CustomControlTag, False) Is Nothing On Error GoTo 0 End Sub 'example makrokomandos komandų juostos mygtukai Sub MyMacroName1 () MsgBox "The time is" & Format (Time, h) h: mm: ss ") Pabaigos poskyrio MyMacroName2 (pasirenkama MsgBoxCaption As String =" UNKNOWN ")" MsgBox "Laikas yra" & Format (Time, "hh: mm: ss"),, _ "Ši makrokomanda buvo pradėta nuo" & MsgBoxCaption End Sub Sub MyMacroName3 (MsgBoxCaption As String, DisplayValue As Integer) MsgBox "The time is" & Format (Time, "hh: mm: ss"),, _ MsgBoxCaption & "" & DisplayValue End Sub