VBA在Excel 2013中自动隐藏function区

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

在这里输入图像说明

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

我已经尝试过在这个线程中显示的提示: VBA将Excel中的function区最小化,但是我对结果不满意。

尝试1

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

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

尝试2

 CommandBars.ExecuteMso "MinimizeRibbon" 

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

尝试3

 SendKeys "^{F1}" 

attampt根本不起作用。 此外,它应该模仿的尝试2.所以即使这不会让我满意。

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

在代码运行之前,我的窗口看起来像这样,在'恢复'的大小:

在这里输入图像说明

运行以下代码:

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

将使窗口看起来像这样,在最大化的窗口大小(就像手动按Auto-Hide Ribbonbutton会发生的情况一样):

在这里输入图像说明

如果要在工作簿打开时自动隐藏function区,请将其放在工作簿代码中:

 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 2010 , Excel 2007

也许你应该做一些更复杂的事情:

使用CommandBars.ExecuteMso "MinimizeRibbon"显示/隐藏function区。 根据您的需要,您可以显示/隐藏function区中的所有其他选项卡。 例如,在这里使用代码的东西 – > Excel隐藏/显示除了自定义选项卡的function区上的所有选项卡

这样2个步骤:

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

第2步 – 使用链接中的一些macros显示或隐藏其余的选项卡。

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

首先,转到Excel选项,然后转到“快速操作工具栏”。

从那里,search“隐藏function区”并添加到工具栏。 在QAT之后,您可以用ALT +#快速调用它(在我的电脑上,这是第8件事,所以ALT + 8会自动隐藏)。

在这里输入图像说明

然后只需添加一个SendKeys ALT然后8:

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

注意:我知道有ActiveSheet.Activate是愚蠢的,我只是添加了testingmacros。 根据被调用的方式,你可以删除/注释掉这一行。 %相当于ALT ,在技术上,我必须按0然后8,因此两条线。

我将其用于演示目的

ActiveWindow.DisplayGridlines = False

ActiveWindow.DisplayHeadings = False

Application.DisplayFormulaBar = False

Application.DisplayFullScreen = True这是我用来隐藏function区

试试这个:

 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 

我在Workbook_Open上调用这个macros来检查function区,如果没有隐藏,它会隐藏function区(实际上它位于另一个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上调用这个macros来检查function区,如果没有显示,它将显示下一个打开的excel电子表格的function区。

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

这消除了在打开工作簿时隐藏色带的可能性,并且用户然后手动显示色带,而色带又反过来靠近并实际隐藏色带。 在打开的时候,色带会再次显示。 每当打开和closures工作簿时,这将保持不变。