Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
On Error GoTo ErrHand
'Only run macro if one cell was changed not multiple cells
If Target.Cells.Count > 1 Then GoTo ErrHand
'If change was in col H, then sort col H descending
If Target.Column = 8 Then
Set Rng = Range("A3:H" & Range("H65536").End(xlUp).Row)
Rng.Sort Key1:=Range("H4"), Order1:=xlDescending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End If
ErrHand:
Exit Sub
End Sub