MW211 EXIT

devlog
ExcelVBA/リボンの最小化と非表示
2018年01月26日
Excel2010までは「リボンの最小化」しかなかったが
(というか「リボンの最小化」の導入はExcel2010からだが)
Excel2013から「リボンの非表示」も導入された。

力関係的には、「リボンの非表示」>「リボンの最小化」なので
リボンが非表示状態で、最小化云々をやろうとするとエラー(*1)となってしまう。
*1:「'ExecuteMso'メソッドは失敗しました:'_CommandBars'オブジェクト」

たとえば、以下は最小化されていない場合に、最小化するマクロだが…
┌──────────────────────────────────────┐
│If Application.CommandBars.GetPressedMso("MinimizeRibbon") = False Then     │
│    Application.CommandBars.ExecuteMso "MinimizeRibbon"                     │
│End If                                                                      │
└──────────────────────────────────────┘
非表示状態の場合には、エラーとなってしまう。

なので、非表示状態じゃない時という条件が必要になる。
しかも、Excel2010では非表示自体ないので、その条件文にも注意が必要。

例えばこんな感じになる(事前に非表示を解消してしまう方法)。
┌──────────────────────────────────────┐
│If CInt(Application.Version) >= 15 Then     ' Excel2013(バージョン15.0)以降 │
│    If Application.CommandBars.GetPressedMso("HideRibbon") = True Then      │
│        Application.CommandBars.ExecuteMso "HideRibbon"                     │
│    End If                                                                  │
│End If                                                                      │
│If Application.CommandBars.GetPressedMso("MinimizeRibbon") = False Then     │
│    Application.CommandBars.ExecuteMso "MinimizeRibbon"                     │
│End If                                                                      │
└──────────────────────────────────────┘
なお、"HideRibbon"も"MinimizeRibbon"もトグル命令なので、状態が反転する。
False下で実行するとTrueとなり非表示化・最小化し、
True下で実行するとFalseとなりそれが解除される。
分類:ExcelVBA