Flo*_*ris 5 xml excel vba excel-vba
我为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>
Run Code Online (Sandbox Code Playgroud)
加载功能区时,未选择任何值 - 下拉列表显示为空.
我希望默认情况下选择第一个项目 - 但找不到任何描述如何操作的文档.我查看了控件的MSDN文档,但它没有涵盖这种情况.我尝试了各种"HTML-like"语句的排列,但它们都被自定义UI编辑器拒绝为无效.我试过的事情的例子:
<item id="Filter1" label="Filter 1" selected="selected" />
Run Code Online (Sandbox Code Playgroud)
错误信息: The 'selected' attribute is not declared
我试过其他属性,如selectedItem
,value
和selected
在<dropDown .../>
declaraction,但似乎没有任何工作.
如果我只有正确的文档,这将是微不足道的,但即使是功能区自定义的完整Microsoft"文档"(在这里找到的是关于这个主题的沉默.
我甚至试图查看位于http://schemas.microsoft.com/office/2006/01/customui的架构是否"人类可读",但当我尝试在浏览器中打开它时,我被告知它是不可用.也许有一招......
所以我转向这个论坛的综合智慧.从我的Q/A比率可以看出,我不经常这样做...
如何修改我的XML以便功能区打开,并在下拉控件中选择任意项?我会满足于它是第一项 - 但"我选择在我的XML中声明的任何项目"都会更好.
我正在为此寻找一个XML解决方案 - 宁愿不必添加onLoad
VBA代码或其他VBA技巧.它有多难,对吧?......
看起来您需要使用VBA才能选择默认项目.
引用dropDown元素的文档(我的重点):
getSelectedItemID(getSelectedItemID callback)
指定要调用的回调函数的名称,以确定要在此控件中选择的项的标识符.getSelectedItemID和getSelectedItemIndex属性是互斥的.如果两个属性都未指定,则控件不应显示所选项目.例如,请考虑以下XML片段:
<gallery id="gallery" getItemCount="GetGalleryItemCount"
getItemID="GetItemID"
getSelectedItemID="GetGallerySelectedItemID" />
Run Code Online (Sandbox Code Playgroud)
在此示例中,当应用程序需要确定库中的选定项时,将调用GetGallerySelectedItemID回调函数.在此示例中,回调函数返回GetItemID回调函数返回的标识符之一.此属性的可能值由ST_Delegate简单类型定义,如2.3.2节中所述.
根据我对文档的阅读,您需要自己维护过滤器的当前所选项目.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>
Run Code Online (Sandbox Code Playgroud)
在您的工作簿的代码模块中:
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
Run Code Online (Sandbox Code Playgroud)
我在启动时也遇到了类似的空白下拉菜单问题,因为尚未设置任何内容。但是,当控件无效但下拉列表已填充时,它将再次返回空白选择(我使控件无效,因为我向列表中添加了一些新项目,所以我希望重建它)。
正如这里提到的,解决方案是使用
<dropDown id="ddc0" label="Label Dropdown 0" getSelectedItemIndex="GetSelectedItemIndexDropDown ...
提到的。
然后VBA回调:
Sub GetSelectedItemIndexDropDown(control As IRibbonControl, ByRef index)
' Callbackname in XML File "GetSelectedItemIndexDropDown ...
按预期工作。注意:onAction= "onActionCallback"
在VBA中用于设置状态并将其广播给任何人;用于getSelectedItemIndex= "onGetSelectedItemIndexCallback"
功能区查询其应显示的状态。
归档时间: |
|
查看次数: |
19648 次 |
最近记录: |