Это должно работать для вас.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Scan As Variant
Scan = Trim(Target.Value)
If Len(Scan) And Target.Column > 2 Then
If Left(Scan, 1) = "$" Then
Scan = Mid(Scan, 2)
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
If Target.Column > 3 Then
Target.ClearContents
Set Target = Cells(Target.Row + 1, 3)
End If
Target.Value = Scan
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End If
Target.Offset(0, Sgn(Val(Scan))).Select
End If
End Sub
Код был расширен, чтобы включить новые требования в соответствии с вашим комментарием.