0

我有一个可以正常工作的自定义功能区,但我只想启用它并显示某些工作簿的添加内容,因此我在加载时检查工作簿标题,如果条件为假,则尝试使用 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"

但这也行不通

4

1 回答 1

2

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

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

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

    Visible = shouldShowOrNot
End Sub

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

身份验证失败的功能区

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

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

于 2013-08-02T10:23:16.427 回答