VBA自动隐藏功能在Excel 2013中

时间:2016-08-29 08:31:27

标签: excel vba excel-vba

如何在VBA中的Excel 2013中Auto-hide Ribbon?我想通过点击下图中标有蓝色的Excel菜单右上角的上箭头图标,然后点击标有橙色的第一个选项来实现我所得到的:

enter image description here

我也会对VBA切换回第三个选项Show Tabs and Commands感兴趣。对我来说重要的是在Excel菜单中保留上箭头图标(标有蓝色)。

我已尝试过此帖子中显示的提示:VBA minimize ribbon in Excel 但我对结果不满意。

尝试1

Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)

这很好,但隐藏了蓝色图标。

尝试2

CommandBars.ExecuteMso "MinimizeRibbon"

这接近我想要的。这会保留蓝色图标,但不会隐藏整个菜单。它切换到图片Show Tabs中显示的第二个选项。

尝试3

SendKeys "^{F1}"

豁免根本不起作用。此外,它应该模仿尝试2.所以即便这样也不会让我满意。

7 个答案:

答案 0 :(得分:11)

我看不出有其他人提出过这个......这不是一种解决方法,这是我认为你正在寻找的实际idMSO。这段代码使我的excel窗口看起来像第一个选项对Auto-Hide Ribbon所做的一样。

在代码运行之前,我的窗口显示为“恢复”大小:

enter image description here

运行以下代码:

Sub HideTheRibbon()
    CommandBars.ExecuteMso "HideRibbon"
End Sub

会在最大化的窗口大小中使您的窗口看起来像这样(就像您手动按下Auto-Hide Ribbon按钮时会发生的那样):

enter image description here

如果您希望在工作簿打开时自动隐藏功能区,请将其放在工作簿代码中:

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

或者,要实现同样的目的,您可以将此代码放在模块中:

Sub Auto_Open()
    CommandBars.ExecuteMso "HideRibbon"
End Sub

如果您希望窗口恢复正常,则会再次运行完全相同的代码。换句话说,以下代码在运行时根本不会进行任何视觉更改,因为idMSO“HideRibbon “是一个toggleButton:

Sub HideTheRibbon()
    CommandBars.ExecuteMso "HideRibbon"
    CommandBars.ExecuteMso "HideRibbon"
End Sub

如果您需要excel中所有idMSO的完整列表,请点击适用于您的以下内容:Excel 2013+Excel 2010Excel 2007

答案 1 :(得分:4)

可能你应该做一些更复杂的事情:

使用CommandBars.ExecuteMso "MinimizeRibbon"显示/隐藏功能区。 根据您的需要,您可以显示/隐藏功能区中的所有其他选项卡。例如。在这里使用一些代码 - > Excel Hide/Show all tabs on Ribbon except custom tab

因此有两个步骤:

第1步 - 使用CommandBars.ExecuteMso显示或隐藏

第2步 - 使用链接中的某些宏显示或隐藏其余选项卡。

一个大的解决方法,但你会得到你想要的。

答案 2 :(得分:4)

我将其用于演示目的

ActiveWindow.DisplayGridlines = False

ActiveWindow.DisplayHeadings = False

Application.DisplayFormulaBar = False

Application.DisplayFullScreen = True 这是我用来隐藏功能区的内容

答案 3 :(得分:2)

First, go to the Excel Options, and go to "Quick Action Toolbar".

From there, search for "Hide Ribbon" and add to the toolbar. After it's on the QAT, you can call it quickly with ALT+# (on my computer it's the 8th thing, so ALT+8 will auto-hide).

enter image description here

Then just add a sub that does SendKeys ALT then 8:

Sub Macro1()
ActiveSheet.Activate
'Cells(1, 1).Select
SendKeys "%0", True
SendKeys "8", True

End Sub

Note: I know it's silly to have ActiveSheet.Activate, I just added that to test the macro. Depending on how it's being called, you can remove/comment out that line. The % is equivalent to ALT, and technically, I have to press 0 then 8, hence the two lines.

答案 4 :(得分:2)

尝试一下:

Sub ShowHideRibbon()

If CommandBars("Ribbon").Controls(1).Height < 100 Then
    CommandBars.ExecuteMso ("MinimizeRibbon")
Else
    CommandBars.ExecuteMso ("MinimizeRibbon")
End If

End Sub

或者这个:

Sub ShowHideRibbon1()

If Application.ExecuteExcel4Macro("Get.ToolBar(7,""Ribbon"")") Then
    Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"", False)"
Else
    Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"", True)"
End If

End Sub

答案 5 :(得分:2)

我在Workbook_Open上调用此宏来检查功能区,如果没有隐藏,它将隐藏功能区(我实际上它位于另一个Sub中,同时删除了Workbook_Open中的公式栏,状态栏,标题和网格线) ...

Sub HideRibbon()
If CommandBars("Ribbon").Controls(1).Height < 100 Then
Exit Sub
Else
    CommandBars.ExecuteMso ("MinimizeRibbon")
End If
End Sub

然后我在Workbook_BeforeClose上调用此宏来检查功能区,如果没有显示,它将显示打开的下一个excel电子表格的功能区。

Sub ShowRibbon()
If CommandBars("Ribbon").Controls(1).Height > 100 Then
Exit Sub
Else
    CommandBars.ExecuteMso ("MinimizeRibbon")
End If
End Sub

这消除了在打开工作簿时隐藏功能区的可能性,然后用户手动显示功能区,而功能区又会在关闭时反转显示并实际隐藏功能区。打开时,将再次显示色带。每次打开和关闭工作簿时都会保持不变。

答案 6 :(得分:0)

要使此代码在excel 2016中工作,您需要在“ ThisWorkbook”模式下使用以下代码。

信用归BigBen-不是我

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