エクセルVBA シートの保護について
エクセルの「シートの保護」について教えてください。
特定のシートのみ、保護したいと思っています。
そのシートの一定の範囲には、入力のみを許可したいです。
というのも、他の範囲(保護したい範囲)には、数式やvbaが設定されており、むやみやたらに「切り取り」や「行や列の削除」をされると困るからです。
そこで、
入力を許可する範囲を選択
→セルの書式設定
→保護のロックを外す
→シートの保護
→「ロックされていないセル範囲を選択」を選択
しました。
この状態でマクロを実行すると、エラー1004(保護されたシートに対してこのコマンドは使用できません)とエラーが出ました。
エラー箇所は以下のとおりです。
Intersect(Worksheets("sheet1").Range("C5").CurrentRegion, Worksheets("sheet1").Rows("5:65536"), Worksheets("sheet1").Columns("C:T")).Select
(質問1)
ロックを外し、その後にシートの保護をする際、「全範囲を選択してから」シートの保護を行うものなのでしょうか。
それともシートの保護をすれば、自動的に、ロックを解除した範囲以外(全範囲)で保護したことになるのでしょうか。
「全範囲を選択してから」シートの保護をすると、ロックを外したセルを選択しても、アクティブセルが罫線で囲われずどこを選んでいるのか分からなくなってしまったので。
もし、あえて全範囲を選択する必要がないなら、それでいこうと思っています。
(質問2)
上記エラーを解消するには、どうしたら良いのでしょうか。
全範囲を選択できないように保護していることが原因かと思い、全範囲について「シートの保護→ロックされたセル範囲の選択」を選んでもエラー解除できませんでした。
また、Intersect.Selectの一行上に「ThisWorkbook.Unprotect」と追加しても解除できませんでした。
2つも質問して申し訳ありませんが、ご存知の方はご教授お願いします。
よろしくお願いします。
お礼
早速の回答有難うございます。 ロックをかけなおしたら無事に設定出来ました。本当に助かりました。