我为Excel 2010创建了一个自定义Fluent Ribbon界面,其中包括一个下拉菜单。相关的XML代码(简体):
<dropDown id="chooseFilter" showLabel="true" label="Filter" onAction="filterSelected" >
<item id="Filter1" label="Filter 1" />
<item id="Filter2" label="Filter 2" />
</dropDown>
加载功能区后,未选择任何值-下拉列表显示为空。
我希望默认情况下选择第一项-但找不到任何描述方法的文档。我查看了该控件的MSDN文档,但没有涵盖这种情况。我尝试了各种“类似HTML”的语句排列,但是它们都被自定义UI编辑器拒绝为无效。我尝试过的事情的示例:
<item id="Filter1" label="Filter 1" selected="selected" />
错误信息: The 'selected' attribute is not declared
我试过其他属性,如selectedItem
,value
和selected
在<dropDown .../>
declaraction,但似乎没有任何工作。
如果只有我掌握了适当的文档,这将是微不足道的,但是即使是针对Ribbon定制的完整Microsoft“文档”(在此处找不到有关该主题的信息)。
我什至试图查看位于http://schemas.microsoft.com/office/2006/01/customui的架构是否可能是“人类可读的”,但是当我尝试在浏览器中打开它时,被告知是不可用。也许有个窍门...
因此,我转向这个论坛的综合智慧。从我的Q / A比率中可以看出,我很少这样做。
如何修改XML,以使功能区打开并在下拉控件中选择任意项?我将把它作为第一个项目加以解决-但是“我选择在XML中声明的任何项目”都是可取的。
我正在为此寻求XML解决方案-希望不必添加onLoad
VBA代码或其他VBA技巧。到底有多难,对吗?
看来您需要使用VBA才能选择默认项。
从文档中引用dropDown元素(我强调):
getSelectedItemID(getSelectedItemID回调)
指定要调用的回调函数的名称,以确定该控件中要选择的项的标识符。getSelectedItemID和getSelectedItemIndex属性是互斥的。如果两个属性均未指定,则控件不应显示所选项目。例如,考虑以下XML片段:
<gallery id="gallery" getItemCount="GetGalleryItemCount"
getItemID="GetItemID"
getSelectedItemID="GetGallerySelectedItemID" />
在此示例中,当应用程序需要确定图库中的选定项目时,将调用GetGallerySelectedItemID回调函数。在此示例中,回调函数返回GetItemID回调函数返回的标识符之一。如第2.3.2节所述,此属性的可能值由ST_Delegate简单类型定义。
根据我对文档的阅读,您应该自己维护过滤器的当前选定项目。GetSelectedItemID处理程序将返回当前选定的项目,OnAction处理程序将对其进行更新。
在XML中:
<dropDown id="chooseFilter" showLabel="true" label="Filter"
getSelectedItemID="GetSelectedItemID" onAction="OnAction">
<item id="Filter1" label="Filter 1" />
<item id="Filter2" label="Filter 2" />
</dropDown>
在工作簿的代码模块中:
Private mCurrentItemID As Variant
Sub GetSelectedItemID(control As IRibbonControl, ByRef itemID As Variant)
If IsEmpty(mCurrentItemID) Then
mCurrentItemID = "Filter1"
End If
itemID = mCurrentItemID
End Sub
Sub OnAction(control As IRibbonControl, selectedID As String, _
selectedIndex As Integer)
mCurrentItemID = selectedID
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句