Slight improvement ...
Private Sub Worksheet_Change(ByVal Target As Range)
'Stop
Dim awf As WorksheetFunction: Set awf = WorksheetFunction
Dim vTarray ' target array
Dim vDarray ' destination array
Dim rTarget As Range, lMatch As Long
' Move Down
Const clRoffset As Long = 1 ' Row Offset for Move
Const clCoffset As Long = 0 ' Column Offset for Move
' Move Right
'Const clRoffset As Long = 0 ' Row Offset for Move
'Const clCoffset As Long = 1 ' Column Offset for Move
vTarray = Array("$E$4", "$E$11", "$J$2", "$J$3", "$J$4", "$J$6", "$D$33")
vDarray = Array("$E$11", "$J$2", "$J$3", "$J$4", "$J$6", "$D$14", "$N$14")
Set rTarget = Target(1, 1)
' check if Target is empty or if the cell count > 1 (merged cells?)
If Len(rTarget.Value) = 0 Or Target.Cells.Count > 1 Then
rTarget.Offset(clRoffset, clCoffset).Select
Exit Sub
End If
' determine which "cell of Interest" has been changed
On Error Resume Next
lMatch = awf.Match(rTarget.Address, vTarray, 0)
If Err.Number = 0 Then
' of interest
Range(vDarray(lMatch - 1)).Select
Else
' not of interest (select next cell down)
rTarget.Offset(clRoffset, clCoffset).Select
End If
End Sub
Regards, TMS
Bookmarks