9

我想使用 VBA 最小化 Excel 2013 中的功能区。我不想切换功能区,也不想隐藏所有内容,包括“文件”、“插入”等。我尝试了几种不同的方法,但没有一个能满足我的要求。

这隐藏了一切:

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

这会切换:

CommandBars.ExecuteMso "MinimizeRibbon"

这也会切换:

SendKeys "^{F1}"

我怎样才能简单地强制我的功能区最小化?

4

4 回答 4

9

测量功能区高度,切换它,再次测量,如果更高,重新切换。最好也设置 Application.Screenupdating = false。

ht1 = Application.CommandBars("Ribbon").Height
SendKeys "^{F1}", False
DoEvents
ht2 = Application.CommandBars("Ribbon").Height
If ht2 > ht1 Then SendKeys "^{F1}", False

当人们质疑你为什么想做你想做的事时,我确实讨厌它。我有一个独裁者应用程序,需要 100% 控制与 Excel 的交互。

于 2014-08-10T15:11:30.183 回答
7

不确定您何时尝试调用它,但如果功能区打开,这将有助于最小化功能区

If Application.CommandBars("Ribbon").Height >= 150 Then
    SendKeys "^{F1}"
End If

打开功能区的最小尺寸似乎是 150,所以这只会在它打开时切换

于 2013-09-26T19:31:55.563 回答
0

如果没有其他人弄乱设置(如果每个人都按照我的建议进行操作,那就太好了),如果您在关闭之前重新切换功能区最小化,它将始终处于打开状态,因此可以将其最小化。只需确保在退出此之前手动隐藏功能区,然后将始终隐藏在打开状态。

Private Sub Workbook_Open()

Application.DisplayFormulaBar = False
Application.CommandBars.ExecuteMso "MinimizeRibbon"

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.DisplayFormulaBar = True
Application.CommandBars.ExecuteMso "MinimizeRibbon"

End Sub
于 2020-05-06T11:08:24.753 回答
-3

如果您希望在打开工作簿后立即将其完全隐藏,请将其添加到工作簿代码中:

Private Sub Workbook_Open()
    Application.ExecuteExcel4Macro "show.toolbar(""Ribbon"",False)"
End Sub
于 2014-04-14T13:41:40.190 回答