Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
マクロでパスワードを設定するとき
投稿日時: 19/10/16 19:42:57
投稿者: ひっちん1

ご指導をお願いします
 
マクロでシート保護時にパスワードを設定する場合は
 
 ActiveSheet.Protect (任意の数値)  で設定をすることが出来ますが
 
この時点で
このシートのすべてのユーザーに許可する操作で
 
セルの書式設定
列の書式設定
行の書式設定
オートフィルターの使用
 
を許可する場合はどのようにしたらよいのか、ご教授お願いします
 
 
マクロ記録で
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFiltering _
        :=True
 
をActiveSheet.Protect (任意の数値) の後につけると
 パスワードの設定が出来なくなります。
 
 
質問の説明がわかり辛いと思いますがよろしくお願いします。

回答
投稿日時: 19/10/16 19:55:49
投稿者: simple

保護の種類はさておくとして、

引用:
ActiveSheet.Protect (任意の数値) の後につけるとパスワードの設定が出来なくなります。
というのは何をもってそうおっしゃっていますか?
最後に ,Password:="パスワード"
のように追加すればできませんか?

回答
投稿日時: 19/10/19 11:59:10
投稿者: simple

Protectメソッドの形式は、ヘルプではこうなっています。
 

引用:
式.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly, AllowFormattingCells, AllowFormattingColumns, AllowFormattingRows, AllowInsertingColumns, AllowInsertingRows, AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering, AllowUsingPivotTables)
Activesheet.Protect "12345"
でこれがパスワード指定と認識されるのは、
Password引数が引数指定の最初にあること、また、他の引数も省略時の既定値が決まっているからです。
そしてその既定値の内容で保護がなされます。
その後、保護の種類を指定して保護しようとしても、
既に保護が掛かっているので、変更はできません。いったん保護解除する必要があります。
 
他の引数も指定し、Password指定もしたいのであれば、同時に指定してください。
 
その場合、もちろんPassword引数を最初に持ってきてもよいですし、
名前付きで引数で指定する場合は、順序によりませんから、マクロ記録の最後につけて
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFiltering _
        :=True,Password:="12345"
としてもOKです。
これでいいですか?

投稿日時: 19/10/23 16:07:00
投稿者: ひっちん1

 simple さん
 
ありがとうございました
 
お礼のご返事が遅くなり大変申し訳ありません
 
ご丁寧な、解説ありがとうございます
 
マクロは難しいですね
 
私のレベルは、マクロ記録で簡単な式を作成しているだけですので
大変助かりました。
 
今後ともご教授お願い申し上げます。