0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Excel 保護機能を使わず、隠シートを実現する

Posted at

Excelの保護機能というものがあるが、行挿入やスタイルなど色々と制限されてしまって個人的にはあまり好きではない。
ただ、業務上お金に絡む部分とか一部のメンバーにしか見せたくない情報があったりもする。
それが全く別の情報ならブックを分ければよいが、予実管理とかみたいなのになれば、それはなかなか難しい。
いちいち同期させるのは手間で、形骸化の要因でもあるので、同じフック内にほしいところ。

ということで、マクロでできるだけのことをやってみた。

結論

先に結論まとめておく。
サンプルはGitにあるので好きに持って行ってください。
https://github.com/kometsubu/Excel/tree/main/01_SecretSheet

img01.png
こんな感じでパッと見、シートが一つしか見えないようになっているが

img02.png
ボタンを押すと、マクロが動いてパスワードを聞かれる

img03.png
でパスワードが正しければ、シートが切り替わる。
ちなみに、この原価管理シートから別のシートに移動すると、最初ようにシートが見えない状態になる。

実現方法

ということで実現方法を紹介

手順1.ブックを開いたときのイベントを定義

標準モジュールに下記の関数を定義
説明にもある通り、ブックを開いたときにメインになるシートに強制的に飛ばして
隠しておきたいシートを非表示設定にする。

ちなみに Visibleプロパティ だが下記のようになっているので間違えてfalseにしないように。

  • true:表示
  • false:非表示(非表示リストに出てくる)
  • xlSheetVeryHidden(非表示リストにでてこない)
標準モジュール
' ------------------------------------------
' フックを開いたときのイベント
'   メインシートを強制的に表示する
' ------------------------------------------
Sub Auto_Open()
   Sheets("原価管理").Visible = xlSheetVeryHidden
   Sheets("予実管理").Activate
End Sub

手順2.非表示シートから離れた際のイベントを定義

非表示にしたいシートから離れるとそのシートをを非表示にする関数を非表示にしたいシートに追加します。

非表示シート(原価管理)
' -----------------------------------------------------
' 原価管理シートがアクティブでなくなったときのイベント
'   原価管理シートを非表示設定にする
' -----------------------------------------------------
Private Sub Worksheet_Deactivate()
    Sheets("原価管理").Visible = xlSheetVeryHidden
End Sub

手順3.ボタン押下時の遷移イベントを定義

ここまでで、非表示シートを非表示にする処理を入れたので、最後に表示する処理を追加する。
これはどこでも良いのですが、標準モジュールに入れておきます。

標準モジュール
' ------------------------------------------
' 原価管理ボタンが押されたときのイベント
'   原価管理シートを表示できるように設定して
'   アクティブ状態にする
' ------------------------------------------
Sub onClick_ToCost()
    If InputBox("パスワードを入力してください") <> PASSWORD Then
        MsgBox "パスワードが違います"
        Exit Sub
    End If
    
    Sheets("原価管理").Visible = xlSheetVisible
    Sheets("原価管理").Activate
    
End Sub

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?