プロが教える店舗&オフィスのセキュリティ対策術

複数シートで構成されたブックがあります。

例えば、各シートの名前が以下の通りだったとします。
「りんご」「みかん」「だいこん」「ぶどう」「トマト」「いちご」「キャベツ」「かぼちゃ」

管理者は全シートが見えても良いのですが、
野菜管理者は、「だいこん」「トマト」「キャベツ」「かぼちゃ」のシートのみ
果物管理者は、「りんご」「みかん」「ぶどう」「いちご」のシートのみ
の閲覧制限を掛けたいのです。

「管理用」シートを1つ用意して、
そこに3つのボタンを設置すれば良いと考えてます。
[野菜に制限]→押すと、野菜シートを表示、果物シートを非表示にする
[果物に制限]→押すと、果物シートを表示、野菜シートを非表示にする
[制限解除] →押すと、全てのシートを表示する

1つ目は
表示、非表示するのはこんな記述しか知らないんですけどこれでOKでしょうか?
Worksheets("りんご").Visible = True
Worksheets("だいこん").Visible = False

2つ目は
[野菜に制限][果物に制限][制限解除]の3つのボタンは管理者だけが押せるように、
クリック時にパスワード入力をさせたいのですが、実現できますでしょうか?
そんな超機密という程ではないので、ソースを見ればPasswordが分かってしまうくらいは構わないと思ってます。(そう見る人もいない環境(笑))

詳しい方、どうぞよろしくお願いいたします。

A 回答 (3件)

1つ目は、それでOKです。



2つ目は
[野菜に制限][果物に制限][制限解除]の3つのボタンごとにマクロを作ると思いますので、そのマクロの最初で、inputboxでパスワードを入力させ、
それが不一致の場合、終了するようにすればよいかと。
Dim pass As String
pass = InputBox("パスワードを入力してください")
If pass <> "abcd" Then Exit Sub
(この場合、パスワードは"abcd"です)
    • good
    • 0
この回答へのお礼

Then Exit Sub の中にMSGBOXを入れたら「パスワードが間違ってます」等のメッセージも出せました。
ありがとうございます。

ここでのパスワードは「*****」の様にマスキングするのはできないでしょうか?

お礼日時:2021/07/07 20:32

>ここでのパスワードは「*****」の様にマスキングするのはできないでしょうか?



ユーザーフォームにテキストボックスを貼り付けて、そこにパスワードを入力すれば、可能と思われます。下記URL参照。
https://h1r0-style.net/excelvba/howto-make-passw …
(私はこの検証作業はしていませんので参考まで。)
    • good
    • 0

こんにちは



表示するシートの組み合わせは決まっているのでしょうから、「ユーザー設定のビュー」を利用して予め表示状態をセットしておくと便利だと思います。

それぞれの組み合わせに個別の名前を付けておけば、個々のシートの表示/非表示をいちいち制御する必要がなくなり、まとめて表示状態を再現できます。

VBAの記述例を挙げれば、
 ActiveWorkbook.CustomViews("野菜").Show
のような1センテンスで、野菜関連のシートだけを表示することができます。

パスワード入力と実行方法はすでにNo1様が回答なさっているので省略。

上記だけだと、非表示になっているシートもユーザの操作で簡単に表示することができてしまうので、ブックの保護をかけておくのが確実ですが、マクロの実行時に解除・再保護の処理が必要になってきます。
(ご質問文からすると、ここまでする必要はないのかも知れませんけれど、
「パスワード入力」などもお考えのようなので、一応…)
    • good
    • 0
この回答へのお礼

今回作業しているブック内にはテーブルを使用しているため、
「ユーザー設定のビュー」が使えないそうです。グレーアウトでした。。。
でも知らなかった情報でしたので次回応用ができそうです。
ありがとうございました。

お礼日時:2021/07/07 11:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています