Vba RibbonXml togglebutton操作找不到回调函数

Vba RibbonXml togglebutton操作找不到回调函数,vba,ms-access,callback,togglebutton,ribbonx,Vba,Ms Access,Callback,Togglebutton,Ribbonx,我遇到了一个奇怪的问题,尽管我花了几个小时在谷歌上搜索和修补,但还是没能解决 <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="OnHomeRibbonLoad"> <ribbon startFromScratch="true"> <tabs> <tab id="tab_Home" label ="Home" visible

我遇到了一个奇怪的问题,尽管我花了几个小时在谷歌上搜索和修补,但还是没能解决

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="OnHomeRibbonLoad">
<ribbon startFromScratch="true">
    <tabs>
        <tab id="tab_Home" label ="Home" visible="true">
          <group id="grp_Navigate" label="Navigate" visible="true">
            <button id="btn_Tasks" label="Tasks" onAction="OnAction" visible="true" imageMso="ViewAllProposals" size="large" />
            <toggleButton id="btn_Parties" label="Parties" onAction="OnAction" getPressed="GetPressed" visible="true" imageMso="ViewAllProposals" size="large" />
            <button id="btn_Memos" label="Memos" onAction="OnAction" visible="true" imageMso="AccessTableIssues" size="large" />
          </group>
        </tab>
    </tabs>
</ribbon>
<backstage onShow="OnBackstageShow">
    <button id="btn_Login" label="Login" insertAfterMso="TabPrint" visible="true" getEnabled="GetEnabled" onAction="OnAction" isDefinitive="true"/>
    <tab id="tab_Settings" label="Settings" insertAfterMso="TabPrint" visible="true" getEnabled="GetEnabled" ></tab>
    <tab id="tab_Welcome" label="Welcome" insertAfterMso="TabPrint" visible="true" > </tab>
    <tab idMso="TabPrint" visible="false"/>
    <button idMso="ApplicationOptionsDialog" visible="false"/>
</backstage>
togglebutton是否有什么特别之处使其OnAction事件不同于标准按钮


如果有人能看出我错在哪里,我将不胜感激。谢谢

用于
toggleButton
控件的
onAction
回调应该如下所示:

  • C:
    无效操作(IRIBONControl控件,按下布尔键)
  • VBA/VB:
    子操作(控件为IRIBONControl,按为布尔值)
  • C++:
    HRESULT OnAction([in]IRIBONControl*pControl,[in]VARIANT\u BOOL*pvarfPressed)
在以下系列文章中阅读有关Fluent UI(也称为Ribbon UI)的更多信息:


正如错误所说:“确保宏或函数存在并采用正确的参数”,宏确实存在,因此错误是错误的参数<代码>切换按钮需要将
按为布尔值
一个附加参数。看,啊,是的,就是这样。出于某种原因,我完全相信togglebutton的方法签名与button的方法签名是相同的。现在都在工作。谢谢。:)
Public Sub OnHomeRibbonLoad(ribbon As IRibbonUI)
    Set HomeRibbon = ribbon
End Sub

Public Sub OnAction(control As IRibbonControl)
    Select Case control.ID
    Case "btn_Tasks"
        MsgBox "Load TaskView"
    Case "btn_Parties"
        MsgBox "Load PartyView"
    Case "btn_Memos"
        MsgBox "Load MemoView"
    Case Else
        Debug.Print "Missing case in OnAction: " & control.ID
    End Select
End Sub

Public Sub GetPressed(control As IRibbonControl, ByRef returnedVal)
    Select Case control.ID
    Case "tbtn_Parties"
        returnedVal = IsPartiesLoaded
    Case Else
        returnedVal = True
        Debug.Print "Missing case in GetEnabled: " & control.ID
    End Select
End Sub