
エクセルVBAを使ってワークシートにあるシート名の欄を非表示にする方法

エクセルVBAを使って作成したファイルを自分だけで使うならば問題ないのですが、複数のスタッフで共有して使っていると、シート名を直接クリックして移動されてしまうとマクロが作動しないので、マクロエラーになった経験ありませんか?
このように作成者の意図しない操作を防ぐには、シート名が表示されている欄自体をを非表示にすることで解決しますよ。
シートを隠して意図しないユーザー操作を防止
シート名の欄は下記画面で「④」の部分で、シートの枚数分表示されクリックすればシートを切り替えられます。
今回はこのシート名の部分自体を非表示にして、ワークシートのスペースを広げることができます。

ユーザーフォームの操作ではなくシート名を直接クリックされたので、本来表示されるはずのフォームが出なくて先に進まなくなった事、このようなトラブルに見舞われて事ありませんか?
さらに最悪な事は「シート名」自体を変更されてします経験もありました。

シートを隠したい!

こうなれば、触りたくても触れないので安心なので、上の図のようにシート自体の表示を消してしまうには、DisplayWorkbookTabsを使います。
DisplayWorkbookTabs
ユーザーフォームに配置したコマンドボタンにシート非表示のコードを書くとこうなります。
Private Sub CommandButton1_Click()
ActiveWindow.DisplayWorkbookTabs = False
End Sub
- コマンドボタン1が押されたら
- 表示中のシート名を非表示にする
- マクロ終了
シートを表示するには、FalseをTrueに変えるだけなので、必ずコマンドボタンに再表示させるVBAコードを記載して、用意しておかないと復旧できなくなりますよ。
エクセルを開いたときに自動的にシートを非表示
いちいちボタンで操作しないで、エクセルを開くと同時に処理をすることも可能なので、ここではコマンドボタンにVBAコードを書かずに、ThisWorkBookに記述します。
Private Sub Workbook_open()
ActiveWindow.DisplayWorkbookTabs = False
End Sub
これで、エクセルを開いてマクロを有効化すると、シートを隠して表示してくれます。
念の為に、ワークシート上かユーザーフォームにシートを再表示する為のコードを記述したコマンドボタンを準備しておく事も必要ですよ!