2016-11-20 195 views
0

我想设置toggleButton的值。这是我区XMLVBA功能区getPressed为toggleButton

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> 
<ribbon startFromScratch="false"> 
    <tabs> 
    <tab id="customTab" label="CC"> 
    <group id="grpSegments" label="Segments"> 
    <dropDown id="cbLeaves" label="Segments" onAction="LeavesChanged" getSelectedItemID="GetCBLeavesSelectedID"> 
     <item id='item4' label='4'/> 
     <item id='item6' label='6'/> 
     <item id='item8' label='8'/> 
     <item id='item12' label='12'/> 
    </dropDown> 
    <button id="cGenerate" label="Generate" size="large" onAction="ArrangeRosette"/> 
    </group> 
    <group id="grpGuides" label="Guides"> 
    <toggleButton id="cToggleGuide" label="Show Guides" onAction="GuideToggled" getPressed="GetGuideState"/> 
    </group> 
    </tab> 
    </tabs> 
</ribbon> 
</customUI> 

我有一个方法与签名

Sub GuideToggled(control As IRibbonControl, ByRef Pressed As Boolean) 

然而,这总是导致一个错误有关宏不被访问。

然而,在getSelectedItemID的下拉毫不费力

Sub GetCBLeavesSelectedID(control As IRibbonControl, ByRef ItemID As Variant) 

我找不到它具有getPressed回调记载的任何资源。

+0

你看了这里https://msdn.microsoft.com/zh-cn/library/dd910802(v=office.12).aspx? – Niclas

+0

谢谢。我曾看过那本书 - 事实上,下载的书。它没有回调。下面的Olle的答案提供了使用Ribbon XML编辑器的有用建议。 –

回答

0

您引用您的丝带XML GuideToggledGetGuideState,所以你需要他们两个:

'Callback for cToggleGuide onAction 
Sub GuideToggled(control As IRibbonControl, pressed As Boolean) 
End Sub 

'Callback for cToggleGuide getPressed 
Sub GetGuideState(control As IRibbonControl, ByRef returnedVal) 
End Sub 

您是否尝试过的custom UI editor tool?它将帮助您找到适合您VBA回调的签名。

+0

谢谢。我不知道自定义用户界面编辑器也做了回调 - 整洁! 我已经从VSTO代码转换签名。发现数据类型需要是“Variant”而不是“Boolean” –