Here is an event-driven solution. Try it, play with it. To do this kind of thing with a macro can frustrate you later, so consider using this on a temporary basis. I.e., once the data is substantially filled, and you want to do other navigation on the sheet, consider renaming the routine Worksheet_SelectionChange to xWorksheet_SelectionChange, effectively disabling it. Or set up a button that toggles Worksheet_SelectionChange functionality to immediately exit, for when the tabbing functionality is not desired.
As you try this you will note another "frustration" in that its mechanism is whenever you land in column E it jumps to column X, even if you didn't just enter a value in column D. That is because it drives off Worksheet_SelectionChange rather than Worksheet_Change. You may prefer it the other way, causing it only to tab when you enter data.
So, as is, use the tab or enter key after entering data in column D, which puts you in column E, and it jumps to column X. Anytime you go to column E, it will go to column X. Try it, play with it
'ThisWorkbook
Option Explicit
Private Sub Workbook_Open()
Call initializeNavTable
End Sub
'Sheet1 code(or whatever it is)
Option Explicit
Dim dong As Long
Private Sub Worksheet_Activate()
dong = Application.MoveAfterReturnDirection
Application.MoveAfterReturnDirection = xlToRight
End Sub
Private Sub Worksheet_Deactivate()
Application.MoveAfterReturnDirection = dong
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
For i = 0 To UBound(lNavCols, 1)
If Target.Column = lNavCols(i, 0) Then
Selection.Offset(0, lNavCols(i, 1)).Select: exit sub
End If
Next i
End Sub
'Module1
Option Explicit
Dim NavTable As Variant
Public lNavCols() As Long
Sub initializeNavTable()
Dim i As Integer
NavTable = Array("D", "X", _
"X", "AB", _
"AB", "P")
ReDim lNavCols((UBound(NavTable)) \ 2, 2)
For i = 0 To UBound(lNavCols, 1)
lNavCols(i, 0) = Range(NavTable(2 * i) & "1").Column + 1
lNavCols(i, 1) = Range(NavTable(2 * i + 1) & "1").Column - lNavCols(i, 0)
Next i
End Sub
But xldennis' (Gord's) solution in the link in the post above looks way mondo cooler. I'd go that way first.