特定のセルのみを編集可能、編集不可に設定

特定のセルのみを編集可能、編集不可にする。

特定のセルのみを編集可能もしくは編集不可にするには「セルのロック状態」と「シートの保護状態」をVBAで制御することでできます。

特定のセルのみ編集可能にするには、編集可能にしたいセルのロックを解除した状態でシートの保護を行うことで指定したセルのみ編集が可能になります。

特定のセルのみ編集不可にするには、シート内のすべてのセルのロックを解除した状態で編集させたくないセルのみに再度ロックを掛けた状態でシートの保護を行うことで指定したセルのみ編集が不可となりなります。

ロックの制御はシートの保護が掛かっている状態で実行するとエラーとなるので、処理の最初にシートの保護状態のチェックをして保護が掛かっていれば解除しています。

 ●特定のセルのみ編集可能にする(B2:E5セルだけ編集可能にする)

'******************************************************************
' 特定のセルのみ編集可能
'******************************************************************
Sub setEditCell()

    '対象のシートオブジェクトを変数に設定
    Dim sObj As Worksheet
    Set sObj = Sheets("Sheet1")
    
    '保護が掛かっていれば解除する
    If sObj.ProtectScenarios Or sObj.ProtectContents Then
        sObj.Unprotect
    End If
    
    '編集可とさせるセルを指定(B2:E5セルだけをロックを外す)
    sObj.Range("B2:E5").Locked = False
    
    'シートの保護
    sObj.Protect

End Sub

 ●特定のセルのみ編集不可にする(B2:E5セルだけ編集不可にする)

'******************************************************************
' 特定のセルのみ編集不可
'******************************************************************
Sub setLockCell()
    
    '対象のシートオブジェクトを変数に設定
    Dim sObj As Worksheet
    Set sObj = Sheets("Sheet1")

    '保護が掛かっていれば解除する
    If sObj.ProtectScenarios Or sObj.ProtectContents Then
        sObj.Unprotect
    End If
    
    'シートのすべてのセルのロックを解除
    sObj.Cells.Locked = False

    '編集不可とさせるセルを指定(B2:E5セルだけをロックする)
    sObj.Range("B2:E5").Locked = True

    'シートの保護
    sObj.Protect
  
End Sub