2016-07-13 13 views
0

別のシートのセルの値に基づいて、指定したシートをロック/ロック解除したいとします。 私はシートformのためのワークシートの変更に次のコードを書いた:Statusactive以外である場合しかし、私はまだ「Rangeクラスの隠されたプロパティを設定することができません」を取得overviewでいくつかのセルを変更することができますロックシートが意図したとおりに動作しない

Application.ScreenUpdating = False 
Status = Sheets("form").Range("J2") 
If Status = "Active" Then 
    Sheets("overview").Unprotect "password" 
    'MsgBox "The template is now unlocked" 
Else 
    Sheets("overview").Protect "password" 
    'MsgBox "The template is locked" 
End If 
Application.ScreenUpdating = True 

現れる。 どこにエラーがありますか?

+0

?どのモジュールまたはワークシートイベントでそれを持っていますか?私はちょうどそれをテストし、それは私のExcelワークブックで動作します。 –

+0

以下のコードを試してみてください。フォームワークシートの "J2"セルの値を変更しているときに動作しています。 –

+0

それが適切かどうかわかりませんが、J2の値はドロップダウンリストから選択できます。 –

答えて

1

は(あなたのformワークシートのコードで)Worksheet_Changeイベントに次のコードを試してください:あなたは、このコードが書かれていない

Private Sub Worksheet_Change(ByVal Target As Range) 

    Application.ScreenUpdating = False 

    Status = Me.Range("J2") 
    If Status = "Active" Then 
     Sheets("overview").Unprotect "password" 
     'MsgBox "The template is now unlocked" 
    Else 
     Sheets("overview").Protect "password" 
     'MsgBox "The template is locked" 
    End If 
    Application.ScreenUpdating = True 


End Sub 
+0

Tryed、ほとんどのセルはロックされていますが、まだ列A、G、Jを選択して入力できます... –

+2

このコードを実行する前にこれらのセルを手動で選択してロックしましたか? –

+0

ロックセルと式の非表示チェックボックスがいっぱいでした。それらを確認した後、動作は期待どおりです。 –

関連する問題