Excelで設定シートやマスターデータなどをユーザーに見せたくない、または誤って編集されるのを防ぎたい場合、シートを「非表示」にします。しかし、通常の非表示設定では、ユーザーがシート見出しを右クリックして「再表示」を選べば、簡単に見えてしまいます。
実は、VBAを使えば**「再表示」の一覧にも出てこない、より強力な非表示設定**が可能です。この記事では、シートの表示状態を制御する.Visible
プロパティの3つの設定値を解説します。
シートの表示状態を決める3つの設定値
ワークシートの表示・非表示は、.Visible
プロパティに以下の3つの定数のいずれかを設定することで制御します。
VBA定数 | 状態 | ユーザーのUIでの操作 | 主な用途 |
xlSheetVisible | 表示 | – | 通常の表示状態。 |
xlSheetHidden | 非表示 | 「再表示」メニューから表示可能 | 作業の邪魔にならないよう、一時的にシートを隠したい場合。 |
xlSheetVeryHidden | “とても”非表示 | 「再表示」メニューに表示されない | 設定シートなど、ユーザーに存在を知られたくない、または触らせたくないシートを完全に隠す場合。 |
Google スプレッドシートにエクスポート
完成したVBAコード
ここでは、シートの表示状態を3つのモードにそれぞれ変更するコードを紹介します。
① シートを通常の「非表示」にする
ユーザーが「再表示」メニューから元に戻せる、一般的な非表示です。
Sub HideSheetNormally()
' 「Config」という名前のシートを通常の非表示に設定
ThisWorkbook.Worksheets("Config").Visible = xlSheetHidden
MsgBox "シートを「非表示」にしました。"
End Sub
② シートを「とても非表示」にする(推奨)
この方法で隠したシートは、VBAを使わない限り再表示できません。
Sub HideSheetVeryHidden()
' 「MasterData」という名前のシートを「とても非表示」に設定
ThisWorkbook.Worksheets("MasterData").Visible = xlSheetVeryHidden
MsgBox "シートを「とても非表示」にしました。"
End Sub
③ 非表示のシートを「再表示」する
xlSheetHidden
またはxlSheetVeryHidden
で非表示にされたシートを、再び表示状態に戻します。
Sub UnhideSheet()
' 非表示になっている「MasterData」シートを再表示
ThisWorkbook.Worksheets("MasterData").Visible = xlSheetVisible
MsgBox "シートを「再表示」しました。"
End Sub
コードのポイント解説
Worksheet.Visible プロパティ
このプロパティに値を代入するだけで、シートの表示状態を簡単に変更できます。
対象シート.Visible = 設定値
xlSheetHidden
: 右クリックメニューの「非表示」と同じです。ユーザーはいつでも「再表示」できます。xlSheetVeryHidden
: この設定こそがVBAの真価です。この状態のシートは、「再表示」ダイアログのリストに現れなくなるため、VBAを知らないユーザーからは完全に隠すことができます。重要な設定やデータを保護するのに最適です。xlSheetVisible
: 非表示になっているシートを元に戻すには、この値を設定します。xlSheetHidden
とxlSheetVeryHidden
のどちらで隠されたシートも、この設定で再表示できます。
まとめ
シートの表示状態を制御する3つのモードを理解し、使い分けましょう。
xlSheetVisible
: 表示xlSheetHidden
: 非表示(ユーザーが再表示可能)xlSheetVeryHidden
: とても非表示(ユーザーはUIから再表示不可)
計算式の参照元となっている重要なデータシートや、マクロの設定値を書き込んでいるシートなどをユーザーから隠したい場合は、通常の「非表示」ではなく、Visible = xlSheetVeryHidden
を使うのが、安全で確実な方法です。