VBA最小化Excel中的功能区

Kyl*_*ler 7 excel vba excel-vba

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

这隐藏了一切:

Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"",False)
Run Code Online (Sandbox Code Playgroud)

切换:

CommandBars.ExecuteMso "MinimizeRibbon"
Run Code Online (Sandbox Code Playgroud)

这也切换:

SendKeys "^{F1}"
Run Code Online (Sandbox Code Playgroud)

我怎样才能简单地强制我的色带最小化?

eng*_*nky 6

不确定您何时尝试调用此功能,但如果功能区打开,这将最大限度地减少功能区

If Application.CommandBars("Ribbon").Height >= 150 Then
    SendKeys "^{F1}"
End If
Run Code Online (Sandbox Code Playgroud)

Open Ribbon最小尺寸似乎是150,因此只有在打开时才会切换

  • 如果从Userform启动sendkeys会失败,因为工作表没有焦点,所以要么在sendkeys之前使用Appactivate,要么使用命令栏代码 (2认同)

小智 6

测量色带高度,切换,再次测量,如果更高,则重新切换.最好也设置Application.Screenupdating = false.

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

当民间质疑为什么你想做你想做的事情时,我确实讨厌它.我有一个Dictator应用程序,需要100%控制与Excel的交互.