2013-09-26 20 views
7

Chcę zminimalizować wstążkę w programie Excel 2013 z VBA. Nie chcę przełączać wstążki i nie chcę ukrywać wszystkiego, w tym "File", "Insert" itp. Próbowałem kilku różnych metod, ale żadna nie spełnia tego, czego chcę.VBA zminimalizować wstążkę w programie Excel

ukrywa to wszystko:

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

ten przełącza:

CommandBars.ExecuteMso "MinimizeRibbon" 

ten przełącza również:

SendKeys "^{F1}" 

Jak mogę po prostu zmusić moją wstążkę zostać zminimalizowany?

+1

Dlaczego chcesz wprowadzić użytkownika w błąd? Pozwól użytkownikowi zdecydować, czy wstążka powinna być widoczna, czy nie. – adrianm

+1

Gdzie jest napisane, że użytkownik nie decyduje? Kliknij przycisk, uruchom makro, decyzja podjęta. –

+0

Co powiesz na 'Application.DisplayFullScreen = True' w zdarzeniu' Workbook_Open() '? –

Odpowiedz

5

Nie wiesz, kiedy próbują nazwać, ale to będzie działać, aby zminimalizować wstążkę, jeśli jego otwarty

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

Otwarte wielkość minimalna Ribbon wydaje się być 150 więc to będzie tylko włączyć, jeśli jest otwarty

+0

Dzięki, to jest świetne, ale zauważam, że moja wstążka ma wysokość 147 po otwarciu i 61 po zamknięciu. Dlatego ustawiam próg na 100. –

+1

Polecenie sendkeys nie powiedzie się, jeśli zostanie uruchomione z Userform, ponieważ arkusz nie ma fokusu, więc albo użyj opcji Appactivate przed sendkeys, albo użyj kodu pasków poleceń –

-3

Jeśli chcesz to być całkowicie ukryte najszybciej jak skoroszyt jest otwarty, a następnie dodać do tego kodu skoroszytu:

Private Sub Workbook_Open() 
    Application.ExecuteExcel4Macro "show.toolbar(""Ribbon"",False)" 
End Sub 
+0

Wygląda na to, że OP już próbował tego i był nie jest zadowolony z wyniku. –

4

pomiaru wysokości wstążki, ustawić go, zmierzenia aga i jeśli wyższy, ponownie przełącz. Najlepiej również ustawić Application.Screenupdating = false.

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

I nienawidzę tego, gdy ludzie pytają, dlaczego chcesz robić to, co chcesz. Mam aplikację Dyktator i potrzebuję 100% kontroli nad interakcją z programem Excel.

Powiązane problemy