【Excel VBA】ユーザーに再表示させない強力なシートの非表示方法

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: 非表示になっているシートを元に戻すには、この値を設定します。xlSheetHiddenxlSheetVeryHiddenのどちらで隠されたシートも、この設定で再表示できます。

まとめ

シートの表示状態を制御する3つのモードを理解し、使い分けましょう。

  • xlSheetVisible: 表示
  • xlSheetHidden: 非表示(ユーザーが再表示可能)
  • xlSheetVeryHidden: とても非表示(ユーザーはUIから再表示不可)

計算式の参照元となっている重要なデータシートや、マクロの設定値を書き込んでいるシートなどをユーザーから隠したい場合は、通常の「非表示」ではなく、Visible = xlSheetVeryHidden を使うのが、安全で確実な方法です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次