The bad news is that you can lock any old cell you want to. But it really won't
mean much to the user until you protect the sheet. If the sheet is unprotected,
the user can do anything he/she wants to any cell--whether it's locked or
unlocked.
An alternative to your _change event:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRng As Range
Dim myCell As Range
Set myRng = Intersect(Target, Me.Range("e:e,h:h,k:k"))
If myRng Is Nothing Then
Exit Sub
End If
On Error GoTo EndItAll:
For Each myCell In myRng.Cells
If myCell.Value <> "" Then
With myCell.Offset(0, 1)
.Value = Now
.Locked = True
End With
End If
Next myCell
EndItAll:
Application.EnableEvents = True
Me.Protect Password:="justme"
End Sub