That's because you have to stop the screen from udating so it won't show what's happening. Use this:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LastRow As Long
Dim ws As Worksheet
Application.ScreenUpdating = False
Set ws = Sheets(2)
LastRow = ws.UsedRange.Rows.Count
With ws.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("C8:C" & LastRow) _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.SetRange Range("A8:C" & LastRow)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Application.ScreenUpdating = True
End Sub
Lines added in blue.
Bookmarks