2016-08-29 56 views
2

如何在Excel 2013中使用VBA中的Auto-hide Ribbon?我想實現什麼,我得到通過點擊上面的箭頭圖標在Excel菜單的右上角下面的圖片標有藍色,然後點擊第一個選項打上橙色:Excel 2013中的VBA自動隱藏功能區

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}" 

的attampt不會在所有的工作。此外,它應該模仿嘗試2.所以即使這不會讓我滿意。

回答

7

我看不到任何人有提出這...這不是一個解決辦法,這是我認爲你正在尋找的實際idMSO。此代碼讓我的Excel窗口看起來像一切都沒有了同樣的方式,第一個選項確實爲Auto-Hide Ribbon

代碼運行之前,我的窗戶看起來像這樣,在 '恢復' 大小:

enter image description here

運行下面的代碼:

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

將使你的窗口看起來像這樣,在maxamized窗口大小(就像會發生什麼,如果你是按手動按鈕):

enter image description here

如果你想帶的工作簿打開時自動隱藏起來,把這個工作簿中的代碼:

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

此外,要達到同樣的的事情,你可以把這個代碼模塊中:

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

如果你想在窗口恢復到正常,再次運行完全相同的代碼。換句話說,跑的時候下面的代碼會使完全沒有視覺變化,因爲idMSO「HideRibbon」是一個切換按鈕:

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

如果你想把所有的idMSO在Excel的完整列表,請點擊以下適用於您:Excel 2013+Excel 2010Excel 2007

+0

我很高興你拿出這個解決方案。簡單和工作:-) –

+0

偉大的解決方案。 –

3

也許你應該做的事情更復雜一點:

使用CommandBars.ExecuteMso "MinimizeRibbon"顯示/隱藏功能區。 根據您的需要,您可以顯示/隱藏功能區中的所有其他選項卡。例如。使用代碼的東西在這裏 - >Excel Hide/Show all tabs on Ribbon except custom tab

因此2步:

第1步 - 秀或與CommandBars.ExecuteMso隱藏

第2步 - 顯示或隱藏的選項卡與一些宏休息從鏈接。

有點大的解決方法,但你會得到你想要的。

+0

你能指點一下第二步的例子嗎? –

+0

在鏈接中就夠了。但是,明確地說 - 在這裏 - > http://www.rondebruin.nl/win/s2/win012.htm。我們的想法是確保每當調用「CommandBars.ExecuteMso MinimizeRibbon」時,您都會調用一些額外的宏(第2步),它隱藏或顯示所有選項卡。德·布魯因先生已經很好地解釋了這一點。希望能夠對您有所幫助:) – Vityata

+1

您的答案對於構建自定義功能區非常有用,並且可能會實現目標。雖然提供的鏈接清楚地解釋了色帶的構建,但我很高興Tyeler提到了一個簡單的解決方案。如果泰勒沒有透露他的解決方案,獎金將是你的。謝謝。 –

3

首先,轉到Excel選項,然後轉到「快速操作工具欄」。

從那裏搜索「隱藏功能區」並添加到工具欄中。在QAT之後,你可以用ALT +#快速調用它(在我的電腦上,它是第8件事,所以ALT + 8會自動隱藏)。

enter image description here

然後,只需添加一分,做的SendKeys ALT然後8:

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

End Sub 

注:我知道這是愚蠢的有ActiveSheet.Activate,我剛添加的測試宏。根據它被調用的方式,您可以刪除/註釋掉該行。所述%相當於​​,並在技術上,我必須按0,則如圖8所示,因此,兩行。

+1

謝謝你的想法。由於在Excel命令中有這樣一個原生的「按鈕」 - 是否無法在沒有發送鍵的情況下調用它?你的想法是好技巧,但是不能通過在其他用戶合約上發送密鑰來完成 - 除非他們修改了他們的快速操作工具欄。 –

+1

@PrzemyslawRemin - 嗯,關於其他用戶的好點。我確信有一些方法可以得到它,但是你是對的,你發現的幾個VBA命令並沒有做到這一點。對於它的價值,使用MacroRecorder也無濟於事 - 它不會跟蹤您隱藏功能區:/ – BruceWayne

+0

幾乎所有在您的圖片中顯示的命令列表都使用相同的單詞和格式(不含空格)作爲他們的idMSO。請參閱我答案底部的鏈接,如果您願意,可以獲取完整列表以進行比較。 – Tyeler

1

這給一試:

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 
+0

不是這樣。第一個Sub完全導致了嘗試2的結果,第二個Sub導致了嘗試1的結果。我對他們中的任何一個都不滿意。 –

2

我用這個演示的目的

ActiveWindow.DisplayGridlines =假

ActiveWindow。DisplayHeadings =假

Application.DisplayFormulaBar =假

Application.DisplayFullScreen =真這是我用來隱藏色帶

0

我呼籲Workbook_Open這個宏檢查色帶,如果沒有隱藏,它會隱藏色帶(其實我有它位於另一個子也刪除公式欄,狀態欄,標題和網格線在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 

這消除了打開工作簿和用戶然後手動表示這反過來將反向上關閉顯示,實際上隱藏色帶色帶時隱藏帶的機會。在打開時,色帶會再次顯示。每次打開和關閉工作簿時,這都會保持不變。