[[20230518120712]] 『グループ化とシート保護を全てのシートに適用した』(きゅう) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『グループ化とシート保護を全てのシートに適用したい』(きゅう)

特定の列と行をグループ化し、
関数式が入っているセルをロックするためシート保護をしました。
これらが両立するよう、以下のマクロをThis Work Bookに記入しました。

Private Sub Workbook_Open()
Sheets("■").EnableOutlining = True
Sheets("■").Protect Password:="▲", DrawingObjects:=True, _
contents:=True, UserInterfaceonly:=True
End Sub

※ ■にはシートの名前、▲にはシート保護のパスワードを入力

これで一旦は完了したと思ったのですが
シートを複製するとシート名が変わってしまう関係で
複製したシートではグループ化が行えず、保護を解除するようにとのメッセージが表示されてしまいます。

「グループ化 シート保護 マクロ」
で検索して出てきたものをいくつか試しましたがどれもうまくいきません。
私以外の方に配信し記入してもらう目的のため
Excelに慣れていない方が正しいデータを提出できるようにしたいです。
なので完成した状態で提出される方は簡単な操作で完結できるようにするのが目標です。

マクロを始めて使ったのもあり、自力で限界のため質問しました。

ご教示いただけますと幸いです。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


 EnableOutliningプロパティというのは、
 グループ化できるかどうかということではなく、
 グループ化されたものを利用(閉じる、開く等)できるかどうか、ということではないでしょうか。
(xyz) 2023/05/18(木) 15:53:57

xyz様

コメントありがとうございます。
申し訳ございません、私の知識不足なのですが、
グループ化されたものが利用できる状態はグループ化が出来ることと比べて
不具合というか不都合があるのでしょうか。

列を閉じる、開くことが出来れば良いと思っていたため
こちらのプロパティでは実行したい操作が完全にはできないのでしょうか

聞いてばかりでごめんなさい

(きゅう) 2023/05/18(木) 17:37:42


 (1)新たにグループ化することと、
 (2)既にグループ化されているものを開いたり閉じたりすること
 は違いますよね。分かりますか?
 Sheets("■").EnableOutlining = True
 は、(1)を可能にすることではなく、
 (2)を可能にするものではないか、ということです。
(xyz) 2023/05/18(木) 17:52:17

 勘違いの為、取り消しました。

 >シートを複製するとシート名が変わってしまう関係で
 >複製したシートではグループ化が行えず、保護を解除するようにとのメッセージが表示されてしまいます。

 BOOKを再度開けると上記の現象になるって事ですかね?
 であれば、↓ここを全シートを対象にしたらどうなのでしょうか?
   Sheets("■").EnableOutlining = True
          ~~~~
 Option Explicit
 Private Sub Workbook_Open()
    Dim i As Long
    For i = 1 To Worksheets.Count
        Sheets(i).EnableOutlining = True
        Sheets(i).Protect Password:="1234", _
        DrawingObjects:=True, _
        contents:=True, _
        UserInterfaceonly:=True
    Next i
 End Sub
(あみな) 2023/05/18(木) 20:36:07

あみな様

ご教授いただきありがとうございます!

試したら成功しました!!!
ありがとうございます!!!
(きゅう) 2023/05/19(金) 14:37:38


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.