Excel VBA 質問スレッド №2162 (解決済)

全シート繰り返し:指定範囲のセルを保護 について

投稿者 : mikan     投稿日時 : 2025/12/16(Tue) 13:23:45     OS : Windows 11     EXCEL : Office 365
下記のマクロで、開いているブック内の全シートに、指定したセル範囲の保護(パス付)をかける指示をしたいです。
実行後エラーなしで終了しますが、全シートで指定した範囲の編集は可能なままでした。原因わかりますでしょうか。



Sub ファイル内すべてのシートに範囲指定してセルロックする()

    Dim ws As Worksheet
    '開いているワークブック内のすべてのシートで繰り返し
    For Each ws In ThisWorkbook.Worksheets
    ' シート保護を解除
        ws.Unprotect Password:="1234"
    ' 全てのセルのロックを解除
        ws.Cells.Locked = False
    '指定のセル範囲ををロック(列・行のみの指定は不可)
        ws.Range("D4:H11").Locked = True
    '任意のパスワードを設定
        ws.Protect Password:="1234"
    Next ws
    
End Sub

スポンサーリンク
[返信 1] Re : 全シート繰り返し:指定範囲のセルを保護 について
投稿者 : 匿名     投稿日時 : 2025/12/16(Tue) 15:02:37
Windows11 Microsoft365で実行しましたが、
全てのシートの指定のセル範囲がロックできました。

新規ファイルを開いて上記のコードを実行しても
同じようにセルのロックができないのでしょうか?

[返信 2] Re : 全シート繰り返し:指定範囲のセルを保護 について
投稿者 : mikan     投稿日時 : 2025/12/16(Tue) 15:28:17
新規シートを開いて、空のシートを複数作ってマクロ実行しましたが、
すべてのシートで、指定の範囲"D4:H11"内に入力・削除・挿入すべて可能な状態でした。
指定した範囲以外も同様に編集可能な状態です。
変更不可のタブが出たり、パスワードを求められたりはしていません。

[返信 3] Re : 全シート繰り返し:指定範囲のセルを保護 について
投稿者 : 昔の話     投稿日時 : 2025/12/16(Tue) 21:30:52
> ' 全てのセルのロックを解除
> ws.Cells.Locked = False

昔の話で悪いけど、ここ数回回して対応しました
因みに本当に全てうまくいったのかの確認はどうやったか覚えてません
確認しなかった可能性もある

[返信 4] Re : 全シート繰り返し:指定範囲のセルを保護 について
投稿者 : 昔の話     投稿日時 : 2025/12/16(Tue) 21:37:54
ああ違うこと書いてた
シート保護してもブックを保護しないと利かなかったような

[返信 5] Re : 全シート繰り返し:指定範囲のセルを保護 について
投稿者 : 昔の話     投稿日時 : 2025/12/16(Tue) 21:44:56
ここみるとブックの保護のこと書いてなかった
昔はブックの保護しないと利かなかった記憶が・・・
https://learn.microsoft.com/ja-jp/answers/questions/5056934/question-5056934

[返信 6] Re : 全シート繰り返し:指定範囲のセルを保護 について
投稿者 : ごんぼほり     投稿日時 : 2025/12/17(Wed) 08:33:13
>ThisWorkbook.Worksheets
ThisWorkbookは、そのマクロが書いてあるブックです。

>開いているブック内
「開いているブック」というのがどのブックか分かりませんが、ActiveWorkbookでは?

[返信 7] Re : 全シート繰り返し:指定範囲のセルを保護 について
投稿者 : mikan     投稿日時 : 2025/12/17(Wed) 15:57:20
■[返信 6] ごんぼほりさん(2025-12-17 08:33:13)の記事
> >ThisWorkbook.Worksheets
> ThisWorkbookは、そのマクロが書いてあるブックです。

> >開いているブック内
> 「開いているブック」というのがどのブックか分かりませんが、ActiveWorkbookでは?

ご回答ありがとうございます。確かに、マクロを入力しているファイルそのものに保護がかかっていました。
ThisWorkbook.をActiveWorkbookに変更して、以下の指示で実行してみましたが、
開いているExcelのシートから実行しても保護が反映されませんでした。
どのように書き換えれば反映されるかわかりますでしょうか。



Sub ファイル内すべてのシートに範囲指定してセルロックする()

    Dim ws As Worksheet
    '開いているワークブック内のすべてのシートで繰り返し
    For Each ws In ActiveWorkbook.Worksheets
    ' シート保護を解除
        ws.Unprotect Password:="1234"
    ' 全てのセルのロックを解除
        ws.Cells.Locked = False
    '指定のセル範囲ををロック(列・行のみの指定は不可)
        ws.Range("D4:H11").Locked = True
    '任意のパスワードを設定
        ws.Protect Password:="1234"
    Next ws
    
End Sub

[返信 8] Re : 全シート繰り返し:指定範囲のセルを保護 について
投稿者 : ごんぼほり     投稿日時 : 2025/12/17(Wed) 16:39:40
>保護が反映されませんでした。
どうやって確かめましたか? 落ち着いてもう一度調べてみてください。
保護したセルに色をつけるようにしてみました。色のついているセルが保護されているか調べてください

Sub ファイル内すべてのシートに範囲指定してセルロックする()

    Dim ws As Worksheet
    '開いているワークブック内のすべてのシートで繰り返し
    For Each ws In ActiveWorkbook.Worksheets
    ' シート保護を解除
        ws.Unprotect Password:="12345"
    ' 全てのセルのロックを解除
        ws.Cells.Locked = False
    '指定のセル範囲ををロック(列・行のみの指定は不可) ←そんなことないです
        ws.Range("D4:H11").Locked = True
        ws.Range("D4:H11").Interior.ColorIndex = 35      ' 追加
    '任意のパスワードを設定
        ws.Protect Password:="1234"
    Next ws
    
End Sub

[返信 9] Re : 全シート繰り返し:指定範囲のセルを保護 について
投稿者 : mikan     投稿日時 : 2025/12/19(Fri) 08:05:51
■[返信 8] ごんぼほりさん(2025-12-17 16:39:40)の記事
> >保護が反映されませんでした。
> どうやって確かめましたか? 落ち着いてもう一度調べてみてください。
> 保護したセルに色をつけるようにしてみました。色のついているセルが保護されているか調べてください


いただいた内容で再度試してみたところ、ちゃんとすべてのシートに保護がかかっていました。
ありがとうございます!

保護解除のマクロも下記で作ってみましたが、問題なく解除することができました。

Sub ファイル内すべてのシートの保護解除する()

    Dim ws As Worksheet
    '開いているワークブック内のすべてのシートで繰り返し
    For Each ws In ActiveWorkbook.Worksheets
    ' シート保護を解除
        ws.Unprotect Password:="1234"
    
    Next ws
    
End Sub



ちなみに、セル範囲を列指定することも下記の方法で指示することができました。
ws.Range("D:H").Locked = True


この度はご丁寧に教えていただきありがとうございました。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2026-01-11 18:41:37 )
タイトルとURLをコピーしました