Excel VBAでセルをロック・ロック解除する方法|実用例6選をわかりやすく解説
Excelでセル、列、行をロックすると、大切なデータを自由に保護できるようになります。ワークシートを保護すると、デフォルトではすべてのセルがロックされ、編集できなくなります。しかし、特定のセルだけを保護対象から外せば、未保護のセルは引き続き編集可能です。この記事では、VBAを使ってExcelのセルをロック・ロック解除する6つの実用的なテクニックをご紹介します。
なお、セルのロックはワークシートを「保護」して初めて有効になる点に注意してください。ロック設定だけでは効果がありません。
準備:サンプルデータについて
Excel VBAは複雑な作業でも簡単に処理できます。コードを入力または記述するだけでOKです。ここでは、販売員(Salesman)、製品(Product)、純売上高(Net Sales)の3列からなるデータ範囲B4:D10をサンプルとして使用し、さまざまなセル範囲のロック方法を解説します。

1.VBAですべてのセルをロックする
最初の例では、ワークシート内のすべてのセルをロックする方法を紹介します。以下の手順に従って操作してください。
手順:
- 開発 ➤ Visual Basicを選択します。

- VBAエディター画面が開きます。挿入 ➤ 標準モジュールを選択しましょう。
- 表示されたモジュールウィンドウに、以下のコードをコピー&ペーストします。
Sub AllCells()
Sheets("All Cells").Cells.Locked = True
Sheets("All Cells").Protect
End Sub

- ファイルを保存し、F5キーを押してコードを実行します。
- その後、任意のセルを編集しようとすると、下図のような警告ダイアログが表示されます。

2.特定のセルだけをチェックボックスでロック・ロック解除する
次に、特定のセルのみをロックするコードを紹介します。さらに、チェックボックスを挿入してロックと解除を切り替えられるようにします。以下の手順で実行しましょう。
手順:
- まず、セル範囲B4:D10に「Table1」という名前を付けます。

- 次に、開発 ➤ 挿入 ➤ チェックボックス(フォームコントロール)をクリックします。

- チェックボックスを任意の場所に配置します。
- シート名タブを右クリックし、コンテキストメニューからコードの表示を選択します。

- 開いたコードウィンドウに以下のコードを入力します。
Private Sub CheckBox1_Click()
Range("Table1").Select
On Error Resume Next
If CheckBox1.Value = True Then
Selection.Locked = False
MsgBox Selection.Address & " Cell Range is Unlocked", vbInformation, "ExcelDemy"
Else
Selection.Locked = True
MsgBox Selection.Address & " Cell Range is Locked", vbInformation, "ExcelDemy"
End If
End Sub

- ファイルを保存し、F5キーでコードを実行します。
- チェックボックスにチェックを入れるとセルがロック解除され、下図のようにダイアログが表示されます。

- 逆に、チェックを外すとセルが再びロックされます。

3.数式が入力されているセルだけをロックする
数式が含まれるセルだけをロックすることも可能です。計算結果を誤って変更されたくない場合に便利なテクニックです。以下の手順で実行してください。
手順:
- 例1と同じ手順で標準モジュールを開き、以下のコードを入力します。
Sub LockCellsWithFormulas()
For Each Rng In ActiveSheet.Range("B5:D10")
If Rng.HasFormula Then
Rng.Locked = True
Else
Rng.Locked = False
End If
Next Rng
ActiveSheet.Protect "111"
End Sub

- その後、Sub/ユーザーフォームの実行(RunSub)ボタンをクリックしてコードを実行します。
- このコードにより、数式が入力されているセルのみがロックされます。
- たとえばD7には数式が入っているため、このセルは編集できなくなります。

4.一部のセルを除いてシート全体をロックする
指定した一部のセルを除いて、ワークシート全体をロックすることもできます。以下のコードではB5:D10の範囲だけをロック対象から除外しています。コードを実行すると、この範囲以外のすべてのセルがロックされます。
Sub WorksheetExceptFewCells()
Dim wb As Workbook
Set wb = ActiveWorkbook
wb.Sheets("Entire Worksheet Except Few").Range("B5:D10").Locked = False
wb.Sheets("Entire Worksheet Except Few").Protect passowrd = "111"
End Sub

5.データ入力後に自動でセルをロックする
指定した範囲にデータを入力した後、自動的にそのセルをロックしたいケースもよくあります。この例では、データ入力範囲をB4:D10とします。以下の手順で実装できます。
手順:
- まず、シート名タブを右クリックしてコードの表示を選択します。
- 開いたコードウィンドウに以下のコードを入力します。
Dim rg As Range
Dim str As String
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("B4:D10"), Target) Is Nothing Then
Set rg = Target.Item(1)
str = rg.Value
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xg As Range
On Error Resume Next
Set xg = Intersect(Range("B4:D10"), Target)
If xg Is Nothing Then Exit Sub
Target.Worksheet.Unprotect Password:="111"
If xg.Value <> str Then xg.Locked = True
Target.Worksheet.Protect Password:="111"
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("B4:D10"), Target) Is Nothing Then
Set rg = Target.Item(1)
str = rg.Value
End If
End Sub

- RunSubボタンまたはF5キーでコードを実行します。
- その後、指定範囲にデータを入力すると、入力済みのセルは自動的にロックされます。
- ロックされたセルを編集しようとすると、下図のような警告ダイアログが表示されます。

6.VBAでセルのロックを解除する
ここまではセルをロックする方法を解説してきましたが、最後にロックを解除するコードを紹介します。以下のコードを使用すれば、ブック内のセルのロックをまとめて解除できます。
Sub UnlockCells()
Sheets("Unlock Cells").Cells.Locked = False
Sheets("Unlock Cells").Unprotect
End Sub

VBAを使わずにセルをロック・ロック解除する方法
VBAを使わずにセルをロック・解除することも可能です。セルの書式設定ダイアログボックスを使用します。セルをロックしたい場合はロックにチェックを入れ、解除したい場合はチェックを外すだけです。ただし、こちらもワークシートやブックを保護しない限り、ロック設定には効果がないので注意しましょう。
手順:
- まず、目的のセル範囲を選択します。
- 次に、Ctrlキーと1キーを同時に押します。
- セルの書式設定ダイアログボックスが表示されます。
- 保護タブで、必要に応じてロックのチェックをオン/オフします。

- ワークシートを保護する場合は、レビュータブに移動します。
- 保護グループのドロップダウンからシートの保護を選択します。
- これでシートが保護され、ロック設定が有効になります。

まとめ
以上、VBAを使ったセルのロック・ロック解除の6つの方法と、VBAなしでの操作方法をご紹介しました。特定のセルをロックすれば、データを他人の変更から守り、誤って削除される事故も防げます。ぜひ実際に試してみてください。他にも便利な方法をご存じの方は、コメント欄でお知らせいただけると嬉しいです。ご質問やご提案もお気軽にどうぞ。
-
Excelで結合セルの行に交互に色を付ける方法【VBAで簡単実装】
Microsoft Excelで大量のデータを扱っていると、行ごとに交互に色を付けると、データが格段に見やすくなり、パターンや傾向も把握しやすくなります。しかし、セルが結合された表では、通常の条件付き書式だけではうまく対応できないことがあります。そこで活躍するのがVBAコードです。VBAを使えば、結合セルを含む表にも簡単に交互の行色を適用できます。この記事では、その具体的な手順をわかりやすく解説します。 Excelで結合セルの行に交互に色を付ける手順 以下のサンプルデータでは、左端の「Category(カテゴリ)」列にさまざまな商品カテゴリ名が入力され、連続する行が「セルを結合」コマンドで結
-
USBメモリでPCをロック・解除する方法!無料ツール「Predator」の使い方
従来のパスワードによる保護はもはや過去のものになりつつあります。今では、物理的な鍵を使ってPCのロックを解除することで、より高いセキュリティを実現できます。オンラインには、USBメモリをPCのロック・解除キーに変換できるツールが数多く存在します。今回は、その中から「Predator」というプログラムをご紹介します。ご安心ください。これはウイルスやランサムウェアではなく、むしろ実用的なツールです。Predatorは無料のWindows向けソフトウェアで、USBフラッシュドライブを鍵に変え、ドライブを抜くと自動的にコンピュータをロックします。差し込めばロックが解除されるため、まるで秘密諜報員のよう