try something along these lines:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C3:W5000")) Is Nothing Then
'Range muss evtl. erweitert werden...
If Target.Column <> 24 Then
'Aenderungsinfo:
'Cells(Target.Row, 24)-> 24 steht für Spalte W, "Datum/Zeit/User,
'muss bei Spalttenverschiebung angepasst werden.
myStr = Now & " " & Environ("Username")
Application.EnableEvents = False
Cells(Target.Row, 24) = myStr
Application.EnableEvents = True
End If
'Sortierung:
'Bereich, auf den sich die Sortierung auswirken soll
Range("A4:X5000").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Note in the above line you were not including column X (column 24) where you've just put the name and timestamp!
myRow = Columns(24).Find(myStr, LookIn:=xlFormulas, lookat:=xlWhole, searchformat:=False).Row
Cells(myRow, Target.Column).Select
End If
End Sub