2017-11-21 3 views
0

B18のドロップダウンで特定のオプション( "T")を選択すると、セルB20をロックして "1"を書き込みます。私が他のオプションを選択した場合、何の制限もなく普通にそれを埋めることができるようにしたい。ここで私が試した最良のコードは次のとおりです。Excelシート:セルをロックし、ドロップダウンオプションに基づいて "1"を書き込みます。

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim ws As Worksheet 
Set ws = ActiveSheet 

If Target.Address = "$B$18" Then 

    ws.Unprotect 

    Application.EnableEvents = False 

    Target.Offset(1).Locked = Target.Value = "T" 

    If Target.Value = "T" Then 
     Target.Offset(1).Value = 1 
    Else 
     If Target.Offset(1).Value = 1 Then Target.Offset.Value = "" 
    End If 

    Application.EnableEvents = True 

    ws.Protect 
End If 


End Sub 

このコードは、私がしたい正確に何やっているが、その代わりに、B20のセルB19でこれを実行します。

誰かが私を助けてくれますか?

+0

'Target.Address =" $ B18 $ 1 "とは何ですか?また、どのセルに「1」を設定したいのですが、どの基準に基づいていますか? – Ralph

+0

間違いは、すでにそれを修正しました。 B18が「T」の場合、B20は「1」になり、ロックされます。 –

答えて

0

質問にはさまざまなことを言っているコードやテキストがたくさんあるので、このコードはあなたのコメントとあなたの質問のテキストに基づいています。

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Target.Address = "$B$18" Then 

     ws.Unprotect 

     Application.EnableEvents = False 

     Target.Offset(2).Locked = Target.Value = "T" 

     If Target.Value = "T" Then 
      Target.Offset(2).Value = 1 
     Else 
      If Target.Offset(2).Value = 1 Then Target.Offset.Value = "" 
     End If 

     Application.EnableEvents = True 

     ws.Protect 

    End If 

End Sub 
+0

"Target.Address =" $ B $ 18 "Then"という行にエラーがあります。私がしたいのは、B18の選択が "T"の場合、セルB20を "1"の値でロックすることです。 –

+0

B20の代わりにセルB19を使用します。 –

+0

はオフセットを2行に変更しました。 :) –

関連する問題