VBAで特定セルの保護

・シートの保護を解除
・特定セル以外のセルのロックを解除(エクセルのセルはデフォルトでロックにチェックが入ってる)
・特定セルのロック
・シートの保護

シートを保護するとロックにチェックが入ってるセルだけが、書込み禁止になる。

Dim RRf As Range
Dim RRt As Range
Set RRt = Worksheets(“申込書”).Range(“A1:AB50”)
Set RRf = Worksheets(“申込書”).Range(“T3:Y4,B21:Y36,P39,W40,B46,N47,P43,U44”)
Worksheets(“申込書”).Unprotect
Locker RRt, True
Locker RRf, False
Worksheets(“申込書”).Protect

Private Sub Locker(Rng As Range, Boo As Boolean)
Dim range As Range
For Each range In Rng
If range.MergeCells Then
range.MergeArea.Locked = Boo
Else
range.Locked = Boo
End If
Next
End Sub

複数シートを使っていて、セルに結合セルがある場合は、RANGEのSET時にシートを指定することと、range.MergeCellsで結合セルであるかどうかをチェックし、結合セルである場合は、range.MergeAreaでマージエリアをロックしないと

「RangeクラスのLockedプロパティを設定できません。」

というエラーが出るので注意。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です