ワークシート内の入力されているセルを保護する方法です。

普通にすれば空白セルを選択し、LockedパロパティをFalseにすればできますがそれでは結合セルは保護できません。

結合セルを保護するには空白セルを総当たりで調べ、結合セルで入力済みかどうか判定する必要があります。


入力されているセルを保護するマクロ

VBA入力画面
マクロ入力画面

入力したコードです。

Sub 入力されているセルを保護()
    
On Error GoTo エラー処理
    ActiveSheet.Unprotect
    
    Cells.Select
    Selection.Locked = True
    Selection.SpecialCells(xlBlanks).Select
    Selection.Locked = False
    For Each r In Selection.SpecialCells(xlCellTypeBlanks)
        If r.MergeCells = True And r.Value <> "" Then
            r.Select
            Selection.Locked = True
        End If
    Next
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Exit Sub

エラー処理:
    MsgBox "保護実行中にエラーが発生しました。" + vbCrLf + Err.Description
End Sub

プログラムの説明


Subプロシージャの宣言
Sub 入力されているセルを保護()
エラーが発生した場合は、エラー処理ラベルに移動します(エラーについてはエラー処理を参照してください)
On Error GoTo エラー処理
念のためシート保護を解除します
ActiveSheet.Unprotect
セル全体を選択します
Cells.Select
選択範囲の編集をロックします
Selection.Locked = True
空白のセルを選択します
Selection.SpecialCells(xlBlanks).Select
空白セルのロックを解除します
Selection.Locked = False
空白セルを総当たりでループします
For Each r In Selection.SpecialCells(xlCellTypeBlanks)
結合セルで入力されている場合
If r.MergeCells = True And r.Value <> "" Then
選択します
r.Select
編集をロックします
Selection.Locked = True
IF文の終了
End If
For Eachここまで
Next
保護を実行します
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
プロシージャの終了
Exit Sub
エラー ラベル
エラー処理:
エラーメッセージとエラー内容を表示します
MsgBox "保護実行中にエラーが発生しました。" + vbCrLf + Err.Description
プロシージャの終了
End Sub

ワークシートの入力されているセルを保護するマクロの実行画面

「入力されているセルを保護」マクロを実行します。
保護マクロの実行

結合したセルを編集しようとすると、「変更しようとしているセルまたはグラフは保護されているため、読み取り専用となっています。保護されているセルまたはグラフを変更するには、[校閲]タブをクリックし、[変更]グループの[シート保護の解除]をクリックして保護を解除します。パスワードの入力を要求されることもあります。」とメッセージが表示され編集できなくなっています。
結合セルのデータを入力

空白セルに入力すると、問題なく入力できました。
空白セルにデータを入力

Excelマクロのサンプルファイル:フリーダウンロード








Copyright (C) excel.usefulhp.com All rights reserved.