In order to know which row the input cell (currently selected cell in column C) has moved to after the sort, a little trick is needed. A temporary 'marker' is put in a spare column cell (I've used M) of the input row, and after the sort we look for the marker on its new row and select the C cell on that row. Here is the new code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim inputRowCell As Range
'If column C (3) has just been entered
If Target.Column = 3 Then
'Put temporary marker text in cell M of input row
Application.EnableEvents = False
Cells(Target.Row, "M").Value = "INPUT_ROW"
Application.EnableEvents = True
'Sort data on descending column C
Cells.Sort Key1:=Range("C2"), Order1:=xlDescending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
'Find marker text in column M
Set inputRowCell = Columns("M").Find(What:="INPUT_ROW", After:=Range("M1"), LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True, SearchFormat:=False)
'Clear marker text and select cell C of new input row
Application.EnableEvents = False
inputRowCell.Clear
Application.EnableEvents = True
Cells(inputRowCell.Row, "C").Select
End If
End Sub
Bookmarks