なぜ、シートを「完全に隠す」必要があるのか
こんにちは、VBA講師の〇〇です。前回はシートを「非表示」にする基本をお伝えしましたが、今回は「実務でなぜこれが必要なのか」という、ワンランク上の視点でお話しします。
皆さんのブックには、計算の根拠となる「マスターデータ」や「複雑な計算式が入った作業用シート」が含まれていませんか?これらがユーザーの目に見える状態だと、誤って削除されたり、勝手に数値を書き換えられたりするリスクが常に付きまといます。
xlSheetVeryHiddenの真価
Excelのメニューから右クリックで「再表示」を選んでも、一覧に出てこない状態を作るのが、xlSheetVeryHiddenというプロパティです。
通常の「非表示(xlSheetHidden)」は、誰でも簡単に再表示できてしまいますが、VeryHiddenはVBAでしか表示させることができません。この「壁」を作ることで、業務マニュアルを読まない層からのミスを未然に防ぐことができます。
実務で使えるコードの構成
では、実際に「必要なときだけ」表示させ、作業が終われば隠すという、堅牢な処理の書き方を見てみましょう。
Sub ToggleSheetVisibility() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(“計算用マスター”) ‘ 現在の状態を確認して切り替える If ws.Visible = xlSheetVeryHidden Then ws.Visible = xlSheetVisible ws.Activate Else ws.Visible = xlSheetVeryHidden End If End Sub
ここがプロのポイント
このコードの肝は、「Activate」をセットで記述している点です。シートを表示させたのに画面が切り替わらないと、ユーザーは「何も起きていない」と勘違いし、再度ボタンを押してエラーを招きます。
また、もし「特定のユーザーだけ編集可能にしたい」という要件があれば、この処理の前に「ユーザー名(Environ(“UserName”))」で判定を入れることで、高度な閲覧制御も可能になります。
次回は、この技術を応用して「マクロ実行時にだけ動的にシートを生成・削除する」という、より応用的なテクニックを解説します。ただ隠すだけでなく、ブックの軽量化まで視野に入れた手法です。お楽しみに!
