我有一个自定义功能区工作正常,但我只想启用它并为某些工作簿添加我的显示,所以我在加载时检查工作簿标题,并尝试使用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"
但这也行不通
答案 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。见下图:
现在上面的图像是功能区的表示,以防用户验证失败。可能有更好的方法,但我发现它是迄今为止最好的方式。
希望这有帮助, Vikas B