禁用 Excel 中的功能区按钮

问题描述 投票:0回答:2

我正在尝试根据 Excel 功能区上另一个自定义按钮的切换状态来禁用自定义按钮。我在功能区的 XML 中定义了一个按钮,如下所示:

<button id="ButtonCalc" label="Re-Calculate" size="large" onAction="calc" image="Calculate" getEnabled="disableRefresh"/>

getEnabled标签的回调为:

'Callback for ButtonCalc getEnabled
Sub disableRefresh(control As IRibbonControl, ByRef enabled)

If calcState Then

    enabled = True

Else
    enabled = False

End If
End Sub

术语“calcstate”是由切换按钮控制的布尔运算:

<toggleButton id="ButtonMode" label="Light Mode" size="large" onAction="ToggleCalcClicked" image="Mode" getPressed="checkLight"/>

这部分的VBA:

Public calcState As Boolean

Dim MyRibbon As IRibbonUI

Sub ToggleCalcClicked(control As IRibbonControl, pressed As Boolean)

calcState = Not calcState
Worksheets("Setup").Range("L47").Value = calcState

Call ChangeCalcState

End Sub

一切正常,除了重新计算按钮被永久禁用。我做错了什么?

vba excel ribbon
2个回答
4
投票

您必须使控件无效才能更改可见性或启用的属性。

Public calcState As Boolean

Dim MyRibbon As IRibbonUI

Sub ToggleCalcClicked(control As IRibbonControl, pressed As Boolean)

  calcState = Not calcState
  Worksheets("Setup").Range("L47").Value = calcState

  ChangeCalcState
  MyRibbon.InvalidateControl("ButtonCalc")

End Sub

0
投票

抱歉,我刚刚发现。 xml 行的回调 有两个参数,并且必须具有以下语法:

'Callback for HyperlinkInsert onAction
Sub Test(control As IRibbonControl, ByRef cancelDefault)
End Sub

有了这个语法就不再有问题了……想想我已经研究了两个多小时而我的搜索却一无所获

© www.soinside.com 2019 - 2024. All rights reserved.