或者使用下拉控件而不是组合框
我在这里找到了一些信息,至少足以开始......
http://gregmaxey.mvps.org/word_tip_pages/customize_ribbon_main.html
使用 XML,如:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="VirtusInitialize">
<ribbon>
<tabs>
<tab idMso="TabInsert">
<group id="CustomGroup1" label="Sticker">
<box id="box1" boxStyle="horizontal">
<dropDown id="ddlItem" label="STICKER 1"
getItemCount="GetItemCount"
getItemLabel="GetItemLabel"
getSelectedItemIndex="GetSelectedItemIndex"
onAction="Sticker1" >
</dropDown>
</box>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
和 VBA 回调:
Private MyRibbonV As IRibbonUI
Public Sub VirtusInitialize(ByVal ribbon As Office.IRibbonUI)
Set MyRibbonV = ribbon
End Sub
Sub Sticker1(ByVal control As IRibbonControl, id As String, index As Integer)
'do stuff
Select Case index
Case 0
Case 1
'do stuff
Case 2
'do stuff
End Select
MyRibbonV.Invalidate
End Sub
'Callback for ddlItem getItemCount
Sub GetItemCount(control As IRibbonControl, ByRef returnedVal)
'puts 3 items in the dropdown and triggers the GetItemLabel
returnedVal = 3
End Sub
'Callback for ddlItem getItemLabel
Sub GetItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
Dim str$
Select Case index
Case 0
str = " "
Case 1
str = "BACK UP"
Case 2
str = "GO FORWARD"
End Select
returnedVal = str
End Sub
'Callback for ddlItem getSelectedItemIndex
Sub GetSelectedItemIndex(control As IRibbonControl, ByRef returnedVal)
'not used
End Sub
'Callback for ddlItem getText
Sub GetText(control As IRibbonControl, ByRef returnedVal)
'not used
End Sub
'Callback for ddlItem getItemID
Sub GetItemID(control As IRibbonControl, index As Integer, ByRef id)
'not used...
End Sub