【问题标题】:Excel VBA hiding custom ribbon tabExcel VBA隐藏自定义功能区选项卡
【发布时间】:2013-08-03 08:25:20
【问题描述】:

我有一个可以正常工作的自定义功能区,但我只想启用它并让我的添加显示某些工作簿,因此我在加载时检查工作簿标题并在条件为 false 时尝试使用 Invalidate 方法。不幸的是,自定义功能区选项卡仍然显示没有任何反应。

以下是我的子:

Public Sub loadMyRibbon(ribbon As IRibbonUI)

    Set RibUI = ribbon

    If Not workbookTitle = "My Workbook" Then
        If Not RibUI Is Nothing
            RibUI.Invalidate
            MsgBox "Not Working"
        End If
    End If

End Sub 

从阅读方法文档来看,这对我来说似乎是正确的: Microsoft Documentation

我看到我的 MsgBox 消息显示在屏幕上,因此我知道代码在此时正确执行,但 RibUI.Invalidate 并没有隐藏我的选项卡。感谢任何指针!

我也试过了:

RibUI.InvalidateControl "myTag"

但这也行不通

【问题讨论】:

    标签: vba excel ribbon


    【解决方案1】:

    Ribbon.Invalidate 并不意味着功能区不会显示。无效功能只是告诉功能区无效并使用其默认/动态属性重新初始化功能区控件。

    我使用了一些插件,如果用户无法通过身份验证,客户端希望隐藏功能区项目。所以在这种情况下,我在所有控件中都使用了“GetVisible”属性,然后我使用了这段代码

    Sub GetVisible(control As IRibbonControl, ByRef Visible)
        On Error Resume Next
    
        Visible = shouldShowOrNot
    End Sub
    

    shouldShowOrNot 是一个布尔变量,如果用户通过身份验证,我在 Ribbon Load 中将其设置为 true。见下图:

    现在上图是功能区的表示,以防用户身份验证失败。可能有更好的方法,但我发现它是迄今为止最好的方法。

    希望这会有所帮助, 维卡斯B

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 1970-01-01
      • 2018-12-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多