A子さん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」といったニーズに応えるため、ぜひ活用してください。

コメント