HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > 保護されたシートで特定のセルのみ変更可能にする(Lockedプロパティ)

保護されたシートで特定のセルのみ変更可能にする(Lockedプロパティ)|Excel VBA

セル操作関連のテクニック

保護されたシートで特定のセルのみ変更可能にする(Lockedプロパティ)

(Excel 2000/2002/2003/2007/2010)

シートが保護されている場合でも、セルのロックが解除されているセルは、ユーザーによる変更が可能になります。
入力されている数式や書式、作成したグラフ等を変更されたくない場合は、シートを保護しておき、ユーザーに編集を許可するセルだけロックを解除しておくことで、ユーザーの操作からシートを守ることができます。

セルのロックは、RangeオブジェクトのLockedプロパティで設定(True)/解除(False)します。シートの保護はProtectメソッドで行い、解除はUnProtectメソッドで行います。
なお、シートが保護されていない場合は、LockedプロパティをTrueに設定しても、セルのロックは有効になりません。

次のサンプルは、使用中のセルのうち、空白セルのみユーザーの入力を許可するように設定します。

Sub Sample()
    ActiveSheet.Unprotect Password:="abcd"      '----シートの保護を解除
    
    Cells.Locked = True                         '----(1)全セルをロック
    
    On Error Resume Next
    ActiveSheet.UsedRange.SpecialCells( _
       Type:=xlCellTypeBlanks).Locked = False   '----(2)空白セルのロックを解除
    On Error GoTo 0
    
    ActiveSheet.Protect Password:="abcd"        '----シートの保護
End Sub

(1)のステートメントで、いったん全セルのLockedプロパティをTrueにした後、(2)のステートメントで空白セルのLockedプロパティをFalseにし、最後にシート全体の保護をかけています。
最初にシートの保護を解除しているのは、シートに保護がかかっている状態ではLockedプロパティの設定ができないためです。

●補足●

保護されたシートでは、LockedプロパティにFalseが設定されたセル間を[Tab]キーで移動できます。