MENU

【初心者向け】VBAでセルの保護を設定・解除する方法をわかりやすく解説!

A子さん

VBAで「セルの保護」を自動で設定・解除したい
パスワード付きでシートをロックするには?
一部のセルだけ編集可能にする方法は?

結論:ProtectUnprotectメソッドで保護・解除ができます

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 = FalseProtect
保護を解除ActiveSheet.Unprotect

シートの保護は、データ破損や誤操作のリスクを減らす上でも重要な処理です。
実務では「特定の範囲だけ入力OK」といったニーズに応えるため、ぜひ活用してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次