'Disallow editing a cell once there is an entry

I am trying to build a log book where:

  • Once the operator enters information that cell should lock.
  • A date and time for the entry should auto populate.

I have tried several codes I found on bulletin boards, but nothing works.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    Application.EnableEvents = False
    If Target.Column = 2 Or Target.Column = 3 Then
        For i = 2 To 1000
            If Cells(i, "B").Value <> " " And Cells(i, "B").Value = " " Then
                Cells(i, "A").Value = Date & " " & Time
                Cells(i, "A").NumberFormat = "m/d/yyyy h:mm AM/PM"
            End If
        Next
    End If
    Range("F:F").EntireColumn.AutoFit
    Application.EnableEvents = True
End Sub


Solution 1:[1]

In the same article you have a solution:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
        On Error GoTo SafeExit
        Application.EnableEvents = False
        Dim bc As Range   'no sense in declaring something until we actually need it
        For Each bc In Intersect(Target, Range("B:B")) 'deal with every cell that intersects. This is how to handle pastes into more than one cell
            If Not IsEmpty(Cells(bc.Row, "B")) Then
                Cells(bc.Row, "A").Value = Now 'Now is the equivalent of Date + Time
                Cells(bc.Row, "A").NumberFormat = "m/d/yyyy h:mm AM/PM"
            End If
        Next bc
        'Range("F:F").EntireColumn.AutoFit 'this slows things down. you may want to comment this out and just set an apprpriate column width that will handle everything
    End If
SafeExit:
    Application.EnableEvents = True
End Sub

I just addpat for your case on Range B:B.

Hope it helps

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 David García Bodego