2016-09-28 11 views
1

ユーザー入力に基づいて書式を設定するスプレッドシートがありますが、ユーザー入力セルになると書式設定されるまでセルはロックされたままにしておく必要があります。 私は、ユーザーインターフェイスのセルだけを見て、VBAで編集できるようにするコードを用意しています。VBAを使用してセルの保護を解除する

> 'protects all sheets upon opening work book 
>  Me.Worksheets("Sheet1").Protect "Password", UserInterfaceOnly:=True 
>  Me.Worksheets("Sheet2").Protect "Password", UserInterfaceOnly:=True 
>  Me.Worksheets("Sheet3").Protect "Password", UserInterfaceOnly:=True 

は今、私はシートをロックした後、前に私ができるように編集を試してみましたが、ユーザー

Sheets("Sheets2").Protection.AllowEditRanges.Add "Test", Range("C2", "C8") 
Sheets("Sheets2").Protection.AllowEditRanges.Add "Test", Range("H6") 
Sheets("Sheets2").Protection.AllowEditRanges.Add "Test", Range("K6") 

により、次のセルが編集可能にできるようにする必要があります。 私が本当に好きなのは、事前に編集可能なセルを定義するのではなく、フォーマットを適用した後にセルをロック解除するVBAコードです。 何か感謝して感謝します:)

答えて

1

範囲のLockedプロパティを変更します。

Range("C2", "C8").Locked = false 

これは、[セルのフォーマット|保護|ロックされたチェックボックスを使用してセルからの保護を解除し、セルをすぐに編集可能にします。

また、将来の使用のために、あなたは保護工程に単純なループを追加する方法について考えてほしいことがあります。

Dim sht as Worksheet 

For each sht in ThisWorkbook.Sheets 
    sht.protect password:=Password, Userinterfaceonly:=True 
Next sht 

人々は新しいシートを追加することによって、制限を回避することはできませんその方法、および保護シートの名前が変更された場合などには引き続き動作します。

+0

ありがとうございます。保護ループの先端も良いです。 –

関連する問題