
VBAで「セルの保護」を自動で設定・解除したい
パスワード付きでシートをロックするには?
一部のセルだけ編集可能にする方法は?
結論:Protect
とUnprotect
メソッドで保護・解除ができます
Excelの「セルの保護」は、シート単位で行います。
VBAでは、次の2つのメソッドが基本です。
ActiveSheet.Protect ActiveSheet.Unprotect
さらにパスワード付きでの保護、特定のセルだけ編集可能にする設定も可能です。
目次
セルの保護とは?VBAでできること
Excelでは、「セルをロック」してもそれだけでは編集を制限できません。
シート自体を保護(Protect)することで初めてロックが有効になります。
VBAなら次のような自動処理が可能です:
- マクロ実行後に自動で保護
- 特定のセルのみ編集可にして保護
- パスワード付きで保護・解除
保護の基本:シート全体をロックするコード
Sub シートを保護する() ActiveSheet.Protect End Sub
これはアクティブシート全体を保護します。
保護すると、セルの編集・行や列の挿入・削除などが制限されます。
パスワード付きでシートを保護する方法
Sub パスワード付きで保護する() ActiveSheet.Protect Password:="abc123" End Sub
🔐 注意
パスワードは英数字混在でも使用可能ですが、忘れると解除できません。
管理方法には十分ご注意ください。
一部のセルだけ編集できるようにする手順
すべてのセルを「ロック」状態にする(既定)
編集可能にしたいセルだけ「ロックを解除」する
シートを保護する
Sub 一部のセルだけ編集可能にする() ' 全セルをロック状態に(既定) Cells.Locked = True ' A1:B3 だけロックを解除 Range("A1:B3").Locked = False ' パスワード付きで保護 ActiveSheet.Protect Password:="abc123" End Sub
保護を解除するコード(パスワードあり・なし)
パスワードなしの場合:
Sub シートの保護を解除() ActiveSheet.Unprotect End Sub
パスワードありの場合:
Sub パスワードで解除する() ActiveSheet.Unprotect Password:="abc123" End Sub
応用例:ボタンでロック・解除を切り替える
Sub ロック切り替え() If ActiveSheet.ProtectContents = True Then ActiveSheet.Unprotect Password:="abc123" MsgBox "保護を解除しました" Else ActiveSheet.Protect Password:="abc123" MsgBox "シートを保護しました" End If End Sub



💡 ProtectContents
は、シートの内容が保護されているかどうかを判定できます。
まとめ:保護の仕組みを理解して業務効率化!
処理内容 | コマンド例 |
---|---|
シートを保護 | ActiveSheet.Protect |
パスワード付き保護 | ActiveSheet.Protect Password:="abc123" |
一部セルのみ編集可 | 対象セル.Locked = False → Protect |
保護を解除 | ActiveSheet.Unprotect |
シートの保護は、データ破損や誤操作のリスクを減らす上でも重要な処理です。
実務では「特定の範囲だけ入力OK」といったニーズに応えるため、ぜひ活用してください。
コメント