title: How to disable changes in a cell using vba?
body: <p>I am working with the bellow code:
  This code do for Example: If I input any value in cell A1, cell B1 display a time stamp.</p>
  
  <pre><code>    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      With Target
         If .Count &gt; 1 Then Exit Sub
         If Not Intersect(Range("B1:B10"), .Cells) Is Nothing Then
             Application.EnableEvents = False
             If IsEmpty(.Value) Then
                 .Offset(0, 1).ClearContents
             Else
                 With .Offset(0, 1)
                     .NumberFormat = "hh:mm AM/PM"
                     .Value = Now
                 End With
             End If
             Application.EnableEvents = True
         End If
      End With
      End Sub
  </code></pre>
  
  <p>What I am trying to do now is to protect/not editable from the user the cell "B1:B10" once time stamp has made by the macro. I google on how to protect but I am having hard time to insert those code I found. Can anyone help me how I construct/insert this code to my original code?</p>
  
  <pre><code>    Private Sub Worksheet_Change(ByVal Target As Range)
      'set your criteria here
      If Target.Column = 1 Then
  
          'must disable events if you change the sheet as it will
          'continually trigger the change event
          Application.EnableEvents = False
          Application.Undo
          Application.EnableEvents = True
  
          MsgBox "You cannot do that!"
      End If
      End Sub
  </code></pre>
  
  <p>Or this code:</p>
  
  <pre><code>    'select the cell you want to be editable
      Worksheets("Sheet1").Range("B2:C3").Locked = False
      'then protect the entire sheet but still vba program can modify instead.
      Worksheets("Sheet1").Protect UserInterfaceOnly:=True
  </code></pre>
  
  <p>Thanks to Kazjaw. Here is the final code.</p>
  
  <pre><code>    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      'Protect cell "B1:B10"
      Worksheets("Sheet1").Cells.Locked = False
      Worksheets("Sheet1").Range("B1:b10").Locked = True
      Worksheets("Sheet1").Protect Password:="pass", UserInterfaceOnly:=Tru
  
      With Target
         If .Count &gt; 1 Then Exit Sub
         If Not Intersect(Range("B1:B10"), .Cells) Is Nothing Then
             Application.EnableEvents = False
             If IsEmpty(.Value) Then
                 .Offset(0, 1).ClearContents
             Else
                 With .Offset(0, 1)
                     .NumberFormat = "hh:mm AM/PM"
                     .Value = Now
                 End With
             End If
             Application.EnableEvents = True
         End If
      End With
      End Sub
  </code></pre>