Välitä argumentit makroihin painikkeista ja valikoista Microsoft Excelin VBA: n avulla

Anonim

Alla oleva esimerkki näyttää, kuinka voit luoda komentopalkin painikkeita/valikoita, jotka välittävät yhden tai useamman argumentin makroon.
esimerkki osoittaa myös, kuinka voit lisätä uuden kohteen Solun pikavalikkoon.

Sub AddCommandToCellShortcutMenu () Dim i As Integer, ctrl CommandBarButton DeleteAllCustomControls 'poista ohjaimet, jos ne ovat jo olemassa' luo uudet ohjausobjektit Application.CommandBars (25) 'solun pikavalikko' lisää tavallinen komentopainike Set ctrl = .Controls.Add (msoControlButton,,,, True) Ctrl .BeginGroup = True .Caption = "New Menu1" .FaceId = 71 .State = msoButtonUp .Style = msoButtonIconAndCaption .Tag = "TESTTAG1" .OnAction = "MyMacroName2 -painike, joka välittää yhden merkkijonoargumentin Aseta ctrl = .Controls.Add (msoControlButton,,,, True) Ctrl .BeginGroup = False .Caption = "New Menu2" .FaceId = 72 .Style = msoButtonIconAndCaption .Tag = "TESTTAG2" .OnAction = "'MyMacroName2" "Uusi valikko2" "" "Lopeta' lisää painike, joka läpäisee yhden merkkijonon argumentin Aseta ctrl = .Controls.Add (msoControlButton,,,, True) Ctrl .BeginGroup = False .Caption =" Uusi Menu3 ".FaceId = 73 .Style = msoButtonIconAndCaption .Tag =" TESTTAG3 ".OnAction = "'MyMacroName2" "" & .Caption & "" "'" End With "lisää painike, joka välittää kaksi argumenttia, merkkijonon ja kokonaisluvun. Aseta ctrl = .Controls.Add (msoControlButton,,,, True) Painamalla ctrl. BeginGroup = False .Caption = "New Menu4" .FaceId = 74 .Style = msoButtonIconAndCaption .Tag = "TESTTAG4" .OnAction = "'MyMacroName3" "" & .Caption & "" ", 10'" End With End Set Set ctrl = Nothing End Sub Sub DeleteAllCustomControls () 'poista ohjausobjektit, jos ne ovat jo olemassa Dim i Integer For i = 1 to 4 DeleteCustomCommandBarControl "TESTTAG" & i Seuraava i End Sub Private Sub DeleteCustomCommandBarControl (CustomControlTag As String)' poistaa kaikki CommandBar -ohjaimet Tag = CustomControlTag On Error Jatka Next Do Application.CommandBars.FindControl (,, CustomControlTag, False) .Delete Loop Before Application.CommandBars.FindControl (,, _ CustomControlTag, False) Is Nothing On Error GoTo 0 End Sub 'example makros komentorivin painikkeet Sub MyMacroName1 () MsgBox "Aika on" & Format (Time, "h h: mm: ss ") End Sub Sub MyMacroName2 (Valinnainen MsgBoxCaption As String =" UNKNOWN ") MsgBox" Aika on "& Format (Time," hh: mm: ss "),, _" Tämä makro aloitettiin " & MsgBoxCaption End Sub Sub MyMacroName3 (MsgBoxCaption String, DisplayValue As Integer) MsgBox "Aika on" & Format (Time, "hh: mm: ss"),, _ MsgBoxCaption & "" & DisplayValue End Sub