首页 > 解决方案 > 如何自动隐藏功能区,但仅适用于特定工作簿且仅适用于该工作簿中的一个工作表

问题描述

如何在工作簿打开时自动隐藏功能区但仅针对特定工作簿并且仅针对该工作簿中的一个工作表?

当我使用下面的代码按预期工作并隐藏功能区时,但是当我打开另一个 excel 文件时,文件中的功能区也被隐藏了。

Private Sub Workbook_Open()
    Application.CommandBars.ExecuteMso "HideRibbon"
 End Sub

标签: excelvba

解决方案


以独特的方式命名工作表,例如“aaa”,然后在ThisWorkbook模块内写入以下内容:

Private Sub Workbook_Activate()
    If ActiveSheet.Name = "aaa" Then
        'Application.CommandBars.ExecuteMso "HideRibbon"
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 'code to hide ribbon.
    Else
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)" 'code to show ribbon.
    End If
End Sub

Private Sub Workbook_Deactivate()
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)" 'code to show ribbon.
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "aaa" Then
        'Application.CommandBars.ExecuteMso "HideRibbon"
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 'code to hide ribbon.
    Else
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)" 'code to show ribbon.
    End If
End Sub

在 Excel 2007 和 Excel 2010 中经过测试并且工作正常。

顺便说一句,Application.CommandBars.ExecuteMso "HideRibbon"在 Excel 2007 和 Excel 2010 中测试过,会抛出错误,您使用的是哪个版本?

如果您愿意,请将上面的“隐藏/显示行”替换为根据评论在您的版本中工作的那些。


推荐阅读