CELLNETS Excel開発の専門会社

【VBA入門】シートを完全に非表示にする方法|xlSheetVeryHiddenと再表示・注意点

実在するのに表示できないシートとは?どうすれば表示できるのか?目的はなんなのか?

実在するのに表示できないシートとは?
どうすれば表示できるのか?目的はなんなのか?

みなさん、こんにちは。セルネッツ竹本です。

今回は、「実在するシートを表示させない設定」をテーマに、解説をしたいと思います。

結論から言うと、VBAで「Visible = xlSheetVeryHidden」を設定したシートは、シート見出しの右クリック「再表示」に出てきません。
設定値やマスタのシートを、利用者に触らせたくないときに使います。

この記事では、次のことがわかります。

  • シートの3つの表示状態(表示・非表示・VeryHidden)の違い
  • VBAでシートを非表示・再表示する書き方と、隠したシートの探し方
  • エラーになるケースや、完全には隠せない点などの注意点

設定シートを守りたい方へ

触られたくない設定シート、仕組みで守れます

  • 設定シートの初期値を誤って書き換えられる
  • 見えないシートがあり、シート枚数が合わない
  • 使える人やPCをツール側で制限したい

そのお悩み、操作ミスを防ぐ設計のExcelツールで解決できます。Excel専門のシステム開発会社『セルネッツ』なら、設定シートの非表示と保護、既定値の管理を組み込めます。利用者を限定する認証の仕組みも追加できます。

\Excel専門特化 × 低価格 × スピード対応/

シートの3つの表示状態

シートのVisibleプロパティには、表示・非表示・VeryHiddenの3つの状態があります。

状態VBAの書き方値右クリックの「再表示」
表示xlSheetVisible(またはTrue)-1—
非表示xlSheetHidden(またはFalse)0一覧に出て、誰でも戻せる
VeryHiddenxlSheetVeryHidden2一覧に出ない

値はMicrosoftの「XlSheetVisibility 列挙型」のとおりで、当社でも実際に確かめました。

そもそも何故、そんなことする必要があるのか

ExcelVBAツールでは、ワークシートを上手に活用することで、「ユーザの任意の設定」を反映することができます。

例えば、「部門の選択での初期値」や、「年月の既定値」などです。

これらの設定は、時に誤った操作が行われるリスクをかかえるため、それを触らせたくない。

そんな目的で隠しシートとすることがあります。

「存在自体を気づかせない」というのは、一長一短ありますが、ライセンス認証などのケースでは、ユーザに気づかれないこの仕組みを使うことがあります。

コードに直接書かず、設定シートに値を持たせる考え方は「ハードコーディングのメリット、デメリット」で解説しています。

VBAでシートを非表示にする方法

VBAからは、通常、以下の記述でシート表示のOn/Offを切り替え指定します。

このオーソドックスな方法は、単純なもので、任意のシートタブを右クリック[再表示(U)]すれば、隠されたシートが表示できます。

Worksheets(1).Visible = False '非表示

Worksheets(1).Visible = True '表示

これに対し、この方法では見えないようにするのが、「xlSheetVeryHidden」を使った以下の書き方です。

Private Sub CommandButton1_Click()

Worksheets(2).Visible = xlSheetVeryHidden

Worksheets("Sheet2").Visible = xlSheetVeryHidden

End Sub

【Point】[シート番号]でも[シート名]でもいずれでもOKです。

ただし、シート番号は非表示のシートも数に入ります。シートを並べ替えると別のシートを指すので、実務ではシート名で指定する方が安全です。

VeryHiddenのシートを再表示する方法

再表示するときは、VisibleにTrue(xlSheetVisible)を設定します。
◆表示をしたい場合は、

Private Sub CommandButton1_Click()

Worksheets(2).Visible = True

End Sub

VBAプログラムを勉強しながら、実験を繰り返すうちに、自身でも忘れてしまうことがあると思います。

何故なら、手動操作では存在自体を知ることができなくなるためです。(ちょっと怖・・・)

Excelの画面からは解除できず、VBAプログラムか、VBEの画面から解除します。

コードを書かずに戻すなら、VBE(Alt+F11)の手順が簡単です。

  1. Alt+F11でVBEを開き、左のプロジェクトエクスプローラーで隠したシートを選ぶ
  2. F4キーでプロパティウィンドウを開く
  3. 「Visible」を「-1 – xlSheetVisible」に変える

ブックを開いたときに自動で表示・非表示を切り替える場合は、ThisWorkbookのWorkbook_Openに書きます(ThisWorkbookに何を書くか、プロの活用提案)。

非表示のシートを一覧で確認する

こんなケースで、実は、ブックのシート枚数が正しく認識できていないケースは少なくありませんので、シート枚数をVBAプログラムで確認し、目視枚数と一致しているかどうか。プロの現場では必ずチェックが行われます。

次のコードで、すべてのシートの名前と表示状態をイミディエイトウィンドウ(Ctrl+G)に書き出せます。

Sub シートの表示状態を一覧にする()
    Dim ws As Worksheet

    Debug.Print "シート数:" & ThisWorkbook.Worksheets.Count
    For Each ws In ThisWorkbook.Worksheets
        Select Case ws.Visible
            Case xlSheetVisible:    Debug.Print ws.Name, "表示"
            Case xlSheetHidden:     Debug.Print ws.Name, "非表示"
            Case xlSheetVeryHidden: Debug.Print ws.Name, "VeryHidden"
        End Select
    Next ws
End Sub

すべてを再表示したいときは、ループの中で「ws.Visible = xlSheetVisible」とします。
For Eachで全シートを回すと、隠したシートも対象になる点は「For Each〜Nextによる全シート操作に潜むリスク」で解説しています。

シートを非表示にするときの注意点

当社でExcelを実際に動かして確かめた、つまずきやすい点は次のとおりです。

状況結果対策
表示中のシートが1枚だけのときに隠すエラー(Visible プロパティを設定できません)先に別のシートを表示しておく
VeryHiddenのシートをSelectするエラー選択せず、シートを指定して直接読み書きする
VeryHiddenのシートをコピーするエラー一度表示してからコピーし、元に戻す
ブックの構造を保護している表示・非表示とも変更できない保護を解除してから変更し、保護し直す

なお、VeryHiddenのシートでも、選択せずに値を書き込むことはできました。

VBEを開ける人には見えてしまう

VeryHiddenは、Excelの画面から見えなくするだけの機能です。VBEのプロジェクトエクスプローラーには、シートが表示されます。
ライセンス情報などを守るなら、VBAプロジェクトのパスワード保護と、ブックの構造の保護を組み合わせてください。

社外に渡すブックに残さない

ブックごと保存して渡すと、隠したシートもそのまま相手に渡ります。送るシートだけを新しいブックにコピーする方法は「xlsmをxlsxに変換して保存する方法」で紹介しています。
マクロの最初にシートの状態をそろえる考え方は「ワークシートのリセット処理でバグ発生率を下げる方法」をご覧ください。

よくある質問

VBAを使わずに、シートを完全に非表示にできますか?

できます。VBE(Alt+F11)のプロパティウィンドウで、Visibleを「2 – xlSheetVeryHidden」にします。
コードを書かなくても、右クリックの「再表示」に出ないシートになります。

非表示のシートにVBAで値を書き込めますか?

書き込めます。「Worksheets(“設定”).Range(“A1”).Value = 1」のように、シートを指定して直接書き込みます。
Selectを使うとエラーになるため、使わない書き方にします。

シートを隠したらマクロでエラーが出るようになりました

隠したシートをSelectしているか、シート番号の指定がずれていることが多いです。
上の一覧のコードで表示状態を確かめ、シート名で指定し直してください。

まとめ

  • Visible = xlSheetVeryHidden のシートは、右クリックの「再表示」に出ない
  • 戻すときは Visible = True。VBEのプロパティウィンドウからも戻せる
  • 最後の1枚は隠せない。SelectとCopyはエラーになる
  • VBEからは見えるので、守りたい情報はパスワード保護と組み合わせる

触らせたくない、見られたくないシートは、目的をもって設定する分には、有効な方法とも言えるでしょう。

今回のテーマは、「実在するシートを表示させない設定」について、解説を行いました。

本記事が、Excel実務の効率化において、ご参考お役立てになれば幸いです。

相見積もり歓迎

隠しシートの多いブックの調査もお任せください

  • 前任者のブックの隠れた構成を調べて整理
  • 作業単価は基本料金50,000円+時間単価
  • システム導入相談は60分無料

前任者が作ったブックに、見えないシートや設定が残っていることは珍しくありません。構成の調査から改修まで、基本料金50,000円+時間単価(開発10,000円/時・税別)でお見積もりします。相見積もりも歓迎です。

\Excel専門特化 × 低価格 × スピード対応/

無料見積もり・お問い合わせはこちら

全国対応・お見積もり無料


Excel業務改善事例ショート動画

文章だけでは伝わりにくい改善事例を、ショート動画でご覧いただけます。

◆よくある質問 ◆Excel業務改善の実例 ◆VBA・マクロ活用事例

Excel業務改善事例ショート動画よくある質問など公開中

関連記事

Excelシステム開発

Excelを複数人で共同編集する方法|オンライン共有の手順と事例

更新日:2026年11月4日

Excelシステム開発

システム開発の依頼ガイド|費用相場・流れ・会社の選び方と「作りすぎない」判断軸

更新日:2026年9月24日

Excelシステム開発

予約システムの開発依頼にかかる費用相場|小規模店舗は100万円以下で作れる

更新日:2026年9月24日

Excelシステム開発

CRMシステム開発の外注費用は?依頼先の選び方と100万円以下に抑える考え方

更新日:2026年9月24日

Excelシステム開発

勤怠管理システム開発の外注費用相場|100万円以下で作る方法とプラン別料金【2026年版】

更新日:2026年9月24日

Excelシステム開発

SFAシステム開発の依頼相場は?高額SaaSに払い続ける前に知るべき「安く作る」現実解

更新日:2026年9月24日

Excelシステム開発

業務システム開発の依頼はいくら?費用相場と「100万円以下」で頼む方法

更新日:2026年9月24日

Excelシステム開発

受発注システム開発の費用相場は?外注料金の内訳と安く抑える方法を解説

更新日:2026年9月24日

Excelシステム開発

販売管理はエクセルで十分?売上管理表・発注管理表の作り方と「限界」の乗り越え方

更新日:2026年11月4日

newsite