
エクセルの「シートの保護」について教えてください。
特定のシートのみ、保護したいと思っています。
そのシートの一定の範囲には、入力のみを許可したいです。
というのも、他の範囲(保護したい範囲)には、数式や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つも質問して申し訳ありませんが、ご存知の方はご教授お願いします。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
VBAでは、初歩的なことですが、Protect メソッドの UserInterfaceOnly のオプションがあります。
Protectが掛かった状態で、手動では変更できなくても、VBAマクロでは可能にする場合に利用します。
例えば、このように、ブックのオープン時に一瞬、プロテクトを解除して、プロテクトをする時に、マクロを有効にさせます。
'//
Private Sub Workbook_Open()
With Worksheets("Sheet1")
.Unprotect Password:="PWS"
.Protect Password:="PWS", UserInterfaceOnly:=True
End With
End Sub
'//
※なお、このおまじないの有効期間は、ブックを閉じるまでの間だけのです。
したがって、私などは、つい、その働きを忘れがちになってしまうので、Workbook_Openなどで、設定します。マクロ起動時、その都度、行う必要はありません。これに付随したオプションがありますので、研究してみてください。
Q.1の解答
シートの保護をすれば、自動的に、ロックを解除した範囲以外(全範囲)は保護したことになる。
Q.2の解答
前文のコマンドで、エラー1004(実行時エラー)は、解消されるはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) エクセル VBAについて 2 2022/09/21 22:21
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) エクセルでシート保護のかかり方の違いとセルの非保護の設定 3 2022/08/09 10:02
- その他(ソフトウェア) スプレッドシートの作業範囲 1 2023/07/18 13:58
- Visual Basic(VBA) シート間で同じ値があったら指定範囲をコピーして貼り付け 1 2022/11/07 08:01
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBA Userform転記のみ編集可 1 2023/06/29 11:03
- Excel(エクセル) エクセル 関数参照範囲のセルの表示 1 2023/03/16 14:55
- Excel(エクセル) Excelのプルダウンメニューの内容を人によって可変する方法 2 2023/03/28 14:52
- Excel(エクセル) エクセルVBA 作業後に選択範囲を解除する方法 5 2023/02/17 07:13
このQ&Aを見た人はこんなQ&Aも見ています
-
worksheet_changeがループする
PowerPoint(パワーポイント)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
5
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
6
別のシートから値を取得するとき
Visual Basic(VBA)
-
7
VBAでEmpty値って何ですか?
Excel(エクセル)
-
8
エクセル シート保護された共有ファイルのマクロ実行
Excel(エクセル)
-
9
シート保護とグループ化機能を両立するマクロで
その他(Microsoft Office)
-
10
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
11
UserForm1.Showでエラーになります。
工学
-
12
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
13
VBA実行後に元のセルに戻りたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの下部のシートタブの...
-
エクセルで別シートの同じ位置...
-
シート全体を他のブックのシー...
-
EXCELでコピーしたグラフのデー...
-
ロックしたセルのコピー&貼り付け
-
エクセルで数式は残したまま他...
-
エクセルでセルの書式設定がで...
-
excelで勝手にテキストボックス...
-
ワークシートの行が途中から表...
-
Excelで保護のかかったシートの...
-
Excelで大量の2000個のリストを...
-
VBA アクティブでないシートの...
-
【エクセル】数式のセル番地を...
-
行の挿入ができなくなった
-
EXCELで入力したものが違...
-
エクセルの同じ名前をカウント...
-
シート保護してても並び替えを...
-
Excelのシートを1枚にまとめる...
-
エクセルの「入力後に移動する...
-
wordからexcelへ一部のデータを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの下部のシートタブの...
-
エクセルで別シートの同じ位置...
-
ワークシートの行が途中から表...
-
エクセルでセルの書式設定がで...
-
シート全体を他のブックのシー...
-
EXCELでコピーしたグラフのデー...
-
Excelで保護のかかったシートの...
-
エクセルで数式は残したまま他...
-
excelで勝手にテキストボックス...
-
ロックしたセルのコピー&貼り付け
-
VBA アクティブでないシートの...
-
シート保護してても並び替えを...
-
Excelで大量の2000個のリストを...
-
行の挿入ができなくなった
-
Excelでハイパーリンク先の表示...
-
【エクセル】数式のセル番地を...
-
シート保護したExcelへの画像貼...
-
フィルタされたものを切り取り...
-
スプレッドシートが真っ白にな...
-
worksheetクラスのcopyメソッド...
おすすめ情報