
ExcelVBA セルやシート、ブックの内容を誤操作から保護するために、ロックやロック解除を行う方法を解説します。使い方や注意点など、サンプルコードをもとに具体的に解説します。
📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!
👇実務で“そのまま使える”テンプレ付きで、コピペするだけ!
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き
目次
Excel VBA セルやシート、ブックの保護シーン
以下のシーンで利用します。
1.データ入力フォームで、特定のセルだけ入力を許可する。
2.計算シートの数式が変更されないように保護する。
3.特定の操作を実行後にロック解除し、完了後に再ロックする。
Excel VBA セルやシート、ブックの保護の使い方と注意点
1.セルのロック ( Locked = True ) は、シートが保護されている場合にのみ有効
2.シートを保護 ( Protect ) することで、ロックされたセルが編集不可になる
3. Protect のパスワードを設定しないと、解除 ( Unprotect ) が誰でも可能
Excel VBAセルやシート、ブックの保護のサンプルコード
Option Explicit
Sub LockCells()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' シートを指定
' まず全セルのロックを解除
ws.Cells.Locked = False
' A1:A10 のみロック
ws.Range("A1:A10").Locked = True
' シートを保護(パスワードなし)
ws.Protect
End Sub
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
シートの保護を解除し、すべてのセルが編集可能に
Option Explicit
Sub UnlockSheet()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' シートの保護を解除
ws.Unprotect
End Sub
パスワード付きの保護
パスワードで保護・解除できるので、勝手に編集できない
Option Explicit
Sub ProtectWithPassword()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' シートをパスワード付きで保護
ws.Protect Password:="1234"
End Sub
vba
Option Explicit
Sub UnprotectWithPassword()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' シートの保護を解除(パスワードが必要)
ws.Unprotect Password:="1234"
End Sub
ブック全体の保護
ブック全体を保護して、シート追加・削除を防ぐ
Option Explicit
Sub ProtectWorkbook()
ThisWorkbook.Protect Password:="1234"
End Sub
vba
Option Explicit
Sub UnprotectWorkbook()
ThisWorkbook.Unprotect Password:="1234"
End Sub
Excel VBAセルやシート、ブックの保護|まとめ
操作 | コード | 説明 |
セルのロック | Range("A1:A10").Locked = True | 指定セルのみ編集不可にする |
シートの保護 | ws.Protect | ロックされたセルを編集不可にする |
シートの解除 | ws.Unprotect | シートの保護を解除 |
パスワード保護 | ws.Protect Password:="1234" | 不正解除を防ぐ |
ブック保護 | ThisWorkbook.Protect | シートの追加・削除を防ぐ |
誤入力を防ぎつつ、必要な部分だけ編集可能にするのがポイント
「Excel VBAで自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。