Excel VBA隐藏自定义功能区选项卡

时间:2013-08-02 06:55:18

标签: vba excel-vba ribbon excel

我有一个自定义功能区工作正常,但我只想启用它并为某些工作簿添加我的显示,所以我在加载时检查工作簿标题,并尝试使用Invalidate方法,如果条件为false。遗憾的是,自定义功能区选项卡仍然没有显示。

以下是我的分:

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"

但这也行不通

1 个答案:

答案 0 :(得分:2)

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

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

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

    Visible = shouldShowOrNot
End Sub

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

Ribbon with Failed Authentication

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

希望这有帮助, Vikas B