vba - 禁用 Excel 中的功能区按钮

标签 vba excel ribbon

我正在尝试根据 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”是由切换按钮控制的 bool 运算:

<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

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

最佳答案

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

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

关于vba - 禁用 Excel 中的功能区按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48197573/

相关文章:

c++ - 如何动态更改 CMFCRibbonLabel 的文本

R ggplot2 : filling the space between 2 lines with varying x values (geom_ribbon) and formatting log axis labels

excel - VBA在特定的工作表中搜索错误,然后将结果传递回主宏

vba - 如何确定录制宏时将使用绝对引用还是相对引用?

excel - 使用 MS Access 交叉表查询时出现太多交叉表列标题错误

excel - Outlook 似乎未检测到 Excel 附件

wpf - WPF的Microsoft功能区与Infragistics功能区

c# - 在草稿文件夹中保存一个项目也会创建一个空白的发件箱项目

python - NoneType 即使定义了属性也会出错?

windows - 你能摆脱 "Microsoft Office Excel has encountered a problem"对话框吗?