できあがったブックを、ユーザに好きにいじってもらいたくない場合があります。その時は、シートを保護することになりますが、リボンや数式バーが表示されたままだと、ちょっと不安です。場合によると、行列の見出しや目盛り線も隠しておきたい、ついでに、シートのタブも表示したくない、ということもあります。
ちなみに、これを全部やってみると、次のようになります。
標準モジュール ChangeDisplay()
'----- 表示モードの切り替え
Public Property Let ChangeDisplayMode(sw)
Dim swStr
swStr = CStr(sw)
With Application
.DisplayFormulaBar = True
.FormulaBarHeight = 1
.DisplayFormulaBar = sw
.DisplayStatusBar = sw
.ExecuteExcel4Macro "show.toolbar(""ribbon""," & swStr & ")"
End With
With ActiveWindow
.DisplayWorkbookTabs = sw
.DisplayHeadings = sw
.DisplayGridlines = sw
End With
End Property
これで、アクティブな画面のリボンからシートタブまで一括して、表示の ON/OFF ができます。残るはスクロールバーだけ。これは消さないでおきました。
ChangeDisplayMode = True で全表示(左図)、False で全隠蔽(右図)となります。
さて、できあがって配布時に右図のようになっていれば、ひとまず安心・・・・と思ったら大変! これでは不具合があったり改修しようとしたりした時に、VBEを表示してデバッグすることができないではないか。
それで、表示モードを切り替えるためのショートカットを用意することにしました。ユーザーには内緒なので、できるだけ想像できないような組み合わせとして、「Ctrl」+「Alt」+「]」で OFF、「Ctrl」+「Alt」+「[」で ON となるようにしてあります。
SetShortCutKeys = True でショートカットキーが設定、False で解除されます。
標準モジュール(RibbonModule) SetShortCutKeys()
'----- ショートカットキーで実行するマクロを記載したモジュール名を定義
Private Const moduleName = "RibbonModule"
'----- ショートカットキーと実行するマクロ名のペアを定義
Private Const scKeysStr = _
"^%{[}, displayOn, ^%{]}, displayOff"
'----- ショートカットキーの設定/解除
Public Property Let SetShortCutKeys(sw)
Dim keyCount, scKeys, n, scKey, procName
scKeys = Split(scKeysStr, ",")
keyCount = UBound(scKeys)
For n = 0 To keyCount Step 2
scKey = Trim(scKeys(n))
procName = Trim(scKeys(n + 1))
Application.OnKey scKey 'その設定を解除して
If sw Then
Application.Wait [now()] + 200 / 86400000 'ちょっと待ってから
'ショートカットキーを設定する
Application.OnKey scKey, moduleName & "." & procName
End If
Next
End Property
'----- 実行するマクロ
Private Sub displayOn(): ChangeDisplayMode = True: End Sub
Private Sub displayOff(): ChangeDisplayMode = False: End Sub
これで、ThisWorkbook に
ThisWorkbook
Private Sub Workbook_Open()
SetShortCutKeys = True
ChangeDisplayMode = False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
SetShortCutKeys = False
End Sub
と書いておけば、ブックを開いたとたんに上の右図のようになり、ショートカットを知らないユーザーにはシートの保護の解除もマクロの編集もできなくなります。でも、それを知っているあなたは Ctrl + Alt + [ で通常の表示に切り替え、Ctrl + Alt + ] でもとに戻すことができます。
めでたし、めでたし。