Excel VBA 質問スレッド №351 (解決済)
シート保護状態で許可する操作の指定について
投稿者 : tanaka 投稿日時 : 2021/08/16(Mon) 09:52:40 OS : Windows 10 EXCEL : Excel 2016
初めまして。VBAの基本がわかっていない初心者です。
シートを保護した状態でオートフィルタやグループ化の操作を許可するVBAを探しています。
下記のサイトでコードを発見したのですが、一部編集したく記載方法を教えて頂けると幸いです。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_020_020.html
編集したい内容
①このコードが適用される範囲を特定のシートだけに制限したい
②行の挿入を可能にするなど、他に許可する操作を追加したい
-----------------------------------------------------------------------------------------
初めまして。VBAの基本がわかっていない初心者です。
シートを保護した状態でオートフィルタやグループ化の操作を許可するVBAを探しています。
下記のサイトでコードを発見したのですが、一部編集したく記載方法を教えて頂けると幸いです。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_020_020.html
編集したい内容
①このコードが適用される範囲を特定のシートだけに制限したい
②行の挿入を可能にするなど、他に許可する操作を追加したい
-----------------------------------------------------------------------------------------
Option Explicit Private Sub Workbook_Open() Dim objSh As Worksheet ' ワークシート(Work) ' 各ワークシートを巡回 For Each objSh In ThisWorkbook.Worksheets With objSh ' グループ操作とオートフィルタ操作を可能としてシート保護 .EnableOutlining = True .EnableAutoFilter = True .Protect UserInterfaceOnly:=True End With Next objSh ' 非保存になるため保存済み状態にする ThisWorkbook.Saved = True End Sub-----------------------------------------------------------------------------------------
スポンサーリンク
[返信 1] Re : シート保護状態で許可する操作の指定について
投稿者 : ハヤシライス 投稿日時 : 2021/08/16(Mon) 14:38:02
「For Each objSh In ThisWorkbook.Worksheets」のあとで、
If objSh.Name = "XXX" Then
のようにしてシート名を判定すればよいのでは?
また、許可したい操作については以下を参考にしてください。
https://excel-ubara.com/excelvba1/EXCELVBA368.html
「For Each objSh In ThisWorkbook.Worksheets」のあとで、
If objSh.Name = "XXX" Then
のようにしてシート名を判定すればよいのでは?
また、許可したい操作については以下を参考にしてください。
https://excel-ubara.com/excelvba1/EXCELVBA368.html
[返信 2] Re : シート保護状態で許可する操作の指定について
投稿者 : tanaka 投稿日時 : 2021/08/16(Mon) 21:55:42
>ハヤシライスさん
返信ありがとうございます。所定の箇所に追加したところ、
「コンパイルエラー:Nextに対するForがありません。」の
メッセージが出て止まってしまいました。構文に過不足が
ありましたらご教示いただけますと幸いです。
また、許可したい操作についてもリンクありがとうございます。
下記のような構文をwith~の後に追加する形でしょうか。
Worksheets(1).Protect AllowFiltering:=True
>ハヤシライスさん
返信ありがとうございます。所定の箇所に追加したところ、
「コンパイルエラー:Nextに対するForがありません。」の
メッセージが出て止まってしまいました。構文に過不足が
ありましたらご教示いただけますと幸いです。
また、許可したい操作についてもリンクありがとうございます。
下記のような構文をwith~の後に追加する形でしょうか。
Worksheets(1).Protect AllowFiltering:=True
[返信 3] Re : シート保護状態で許可する操作の指定について
投稿者 : ハヤシライス 投稿日時 : 2021/08/17(Tue) 09:02:57
エラーですが、追加したIFステートメントに対応する「End If」は記述していますか?
また、「Worksheets(1).Protect AllowFiltering:=True」ですが、元のコードには、Withブロックがあるので、その中で処理することになるかと思います
(すでに、「.Protect UserInterfaceOnly:=True」がありますね)。
エラーですが、追加したIFステートメントに対応する「End If」は記述していますか?
また、「Worksheets(1).Protect AllowFiltering:=True」ですが、元のコードには、Withブロックがあるので、その中で処理することになるかと思います
(すでに、「.Protect UserInterfaceOnly:=True」がありますね)。
[返信 4] Re : シート保護状態で許可する操作の指定について
投稿者 : tanaka 投稿日時 : 2021/08/17(Tue) 15:30:27
ハヤシライスさん返信ありがとうございます。
基礎知識がなく申し訳ありません。
End Ifを追記して動作するようになりました。
また、許可する操作はWithブロックの中の
「.Protect UserInterfaceOnly:=True」の後に
カンマ区切りで追記したら機能しました。
素人にも分かるように記載して頂き大変助かりました。
設定したかった内容が動作するようになりました。
ありがとうございました。
ハヤシライスさん返信ありがとうございます。
基礎知識がなく申し訳ありません。
End Ifを追記して動作するようになりました。
また、許可する操作はWithブロックの中の
「.Protect UserInterfaceOnly:=True」の後に
カンマ区切りで追記したら機能しました。
素人にも分かるように記載して頂き大変助かりました。
設定したかった内容が動作するようになりました。
ありがとうございました。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-08-10 09:29:19 )