Skicka argument till makron från knappar och menyer med VBA i Microsoft Excel

Anonim

Exemplet nedan visar hur du kan skapa CommandBar -knappar/menyer som skickar ett eller flera argument till ett makro.
exemplet visar också hur du kan lägga till ett nytt objekt i genvägsmenyn Cell.

Sub AddCommandToCellShortcutMenu () Dim i As Integer, ctrl As CommandBarButton DeleteAllCustomControls 'radera kontrollerna om de redan finns' skapa de nya kontrollerna Med Application.CommandBars (25) 'cell genvägsmeny' lägg till en vanlig kommandofält Ställ in ctrl = .Controls.Add (msoControlButton,,,, True) Med ctrl .BeginGroup = True .Caption = "Ny meny1" .FaceId = 71 .State = msoButtonUp .Style = msoButtonIconAndCaption .Tag = "TESTTAG1" .OnAction = "MyMacroName2" With knapp som passerar ett strängargument Ställ in ctrl = .Controls.Add (msoControlButton,,,, True) Med ctrl .BeginGroup = False .Caption = "New Menu2" .FaceId = 72 .Style = msoButtonIconAndCaption .Tag = "TESTTAG2" .OnAction = "'MyMacroName2" "Ny meny2" "" "Sluta med" lägg till en knapp som passerar ett strängargument Ange ctrl = .Controls.Add (msoControlButton,,,, True) Med ctrl .BeginGroup = False .Caption = "Ny Meny3 ".FaceId = 73 .Style = msoButtonIconAndCaption .Tag =" TESTTAG3 ".OnAction = "'MyMacroName2" "" & .Caption & "" "'" Sluta med 'lägg till en knapp som passerar två argument, en sträng och ett heltal Ange ctrl = .Controls.Add (msoControlButton,,,, True) Med 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 Sub DeleteAllCustomControls () 'radera kontrollerna om de redan finns Dim i As Integer For i = 1 To 4 DeleteCustomCommandBarControl "TESTTAG" & i Next i End Sub Private Sub DeleteCustomCommandBarControl (CustomControlTag As String)' raderar ALLA CommandBar -kontroller med Tag = CustomControlTag On Error Resume Next Do Application.CommandBars.FindControl (,, CustomControlTag, False). Radera Loop Till Application.CommandBars.FindControl (,, _ CustomControlTag, False) Är inget på fel GoTo 0 End Sub 'exempelmakron kommandofältets knappar Sub MyMacroName1 () MsgBox "Tiden är" & Format (Time, "h h: mm: ss ") End Sub Sub MyMacroName2 (Valfritt MsgBoxCaption As String =" UNKNOWN ") MsgBox" Tiden är "& Format (Time," hh: mm: ss "), _" Detta makro startades från " & MsgBoxCaption End Sub Sub MyMacroName3 (MsgBoxCaption As String, DisplayValue As Integer) MsgBox "Tiden är" & Format (Time, "hh: mm: ss"),, _ MsgBoxCaption & "" & DisplayValue End Sub